What Happens With Free VPSes If Beautiful Crunchy Marries Handsome Ryzen?

Not_OlesNot_Oles Hosting ProviderContent Writer

Friendly greetings!

As you may know, thanks to @crunchbits, for almost a year MetalVPS has given away free VPSes on beautiful Crunchy <3 a donated Crunchbits server.

Today, we are rocketing on down towards November 8, the date when Crunchy needs to be renewed.

A whisper recently heard suggested that, although nothing is cemented, Crunchy perhaps, perhaps not, possibly, possibly not, just maybe, or maybe not, but at least conceivably . . . could be upgraded to Ryzen. Woo!

Another idea, if Crunchy continues or if Crunchy is upgraded, might be to increase slightly the number of free VPS Neighbors. Handling a slightly increased number of Neighbors might be facilitated by adding FOSSBilling to keep everything better organized and to add new Neighbors via a web interface.

FOSSbilling seems to be coming along quite nicely! But, so far, FOSSBilling doesn't have an integrated back end to provision VPSes. Nevertheless, using BashVM for almost a year suggests that something as simple and elegant as BashVM might work well with FOSSBilling. Maybe something like BashVM could be integrated into FOSSBilling?

Thus the idea emerges:

  • a possibly Ryzenified Crunchy,

  • with slightly more Neighbors,

  • FOSSBilling, and

  • BashVM, or something similar, either alongside FOSSBilling or integrated into FOSSBilling.

This idea might give us a graphical web interface that's open source and which takes care of adding new Neighbors and provisioning their VPSes.

What do you guys think? Does anybody want to help make it happen?

Best!

Tom

I hope everyone gets the servers they want!

Thanked by (1)adly
Tagged:

Comments

  • Billing software: needs API access to the hypervisor for automated deployment.
    BashVM: provides human interface, but not API.
    Incompatible philosophy!

    Thanked by (3)adly Not_Oles fluttershy

    HostBrr aff best VPS; VirmAche aff worst VPS.
    Unable to push-up due to shoulder injury 😣

  • @yoursunny said:
    Billing software: needs API access to the hypervisor for automated deployment.
    BashVM: provides human interface, but not API.
    Incompatible philosophy!

    ^^^ This. You're going to need to change the VM management to something that provides a API.

    If you are wanting no cost then maybe Proxmox + Paymenter, or something similar? If you're looking for volunteers then I'm happy to help out.

    Thanked by (1)Not_Oles

    SharedGrid | Fast, secure, and reliable UK, USA and Singapore web, reseller and VPS Hosting
    Litespeed, Redis Cache, NVMe Drives, Daily Backups, 24x7 Support, Wordpress Optimised.

  • @SharedGrid said:

    @yoursunny said:
    Billing software: needs API access to the hypervisor for automated deployment.
    BashVM: provides human interface, but not API.
    Incompatible philosophy!

    ^^^ This. You're going to need to change the VM management to something that provides a API.

    If you are wanting no cost then maybe Proxmox + Paymenter, or something similar? If you're looking for volunteers then I'm happy to help out.

    Depends how hacky of a solution is tolerable really. It’s not beyond the realm of possibility to create a small API script on the hypervisor that translates API calls to BashVM commands (not too hacky), or have the FOSSBilling module connect via SSH and execute the commands (extremely hacky).

    Thanked by (1)Not_Oles
  • Not_OlesNot_Oles Hosting ProviderContent Writer

    @adly said: It’s not beyond the realm of possibility to create a small API script on the hypervisor that translates API calls to BashVM commands (not too hacky)

    This sounds like what I am imagining. If I understand right, at least some bashvm commands call virsh, which is libvirt, so I am guessing there already is a full API within libvirt. They call libvirt "the Virtualization API" so it sounds like there might be an API there.

    Here is bashvm calling virsh:

    root@crunchy:~/bashvm# grep virsh bashvm.sh
                            virsh list --all
                            virsh dominfo "$vm_name"
                            virsh domfsinfo "$vm_name"
                            virsh domblkinfo "$vm_name" --all --human
                            virsh start "$vm_name"
                            virsh reboot "$vm_name"
                            virsh shutdown "$vm_name"
                            virsh destroy "$vm_name"
                            virsh autostart "$vm_name"
                            virsh autostart --disable "$vm_name"
                            vm_state=$(virsh list --all | grep "$vm_name" | awk '{print $3}')
                            virsh destroy "$vm_name"
                            virsh undefine "$vm_name"
                            virsh console $hostname
                                        virsh dominfo "$vm_name"
                                        virsh domfsinfo "$vm_name"
                                        virsh domblkinfo "$vm_name" --all --human
                                        virsh vol-resize "$vm_name".qcow2 "$disk_size" --pool "$pool_name"
                                        virsh vol-resize "$vm_name".qcow2 "$disk_size" --pool "$pool_name" --shrink
                                        virsh setvcpus --domain "$vm_name" --count "$vcpu_num" --config --maximum
                                        virsh setvcpus --domain "$vm_name" --count "$vcpu_num" --config
                                        virsh setmaxmem --domain "$vm_name" --size "$mem_num" --current
                                        virsh setmem --domain "$vm_name" --size "$mem_num" --current
                            vm_state=$(virsh list --all | grep "$vm_name" | awk '{print $3}')
                            vm_mac=$(virsh net-dumpxml "$net_name" | grep "$vm_name" | head -n 1 | awk '{print $2}' | cut -d"'" -f2)
                            vm_ip=$(virsh net-dumpxml "$net_name" | grep "$vm_name" | head -n 1 | awk '{print $4}' | cut -d"'" -f2)
                            virsh net-update "$net_name" delete ip-dhcp-host "<host mac='$vm_mac' name='$vm_name' ip='$vm_ip' />" --live --config
                            virsh undefine "$vm_name" --remove-all-storage
                            virsh pool-list --details
                            virsh vol-list --pool "$pool_name"
                            virsh pool-start "$pool_name"
                            virsh pool-destroy "$pool_name"
                            virsh pool-define-as "$new_pool_name" "$pool_type" --target "$pool_source"
                            virsh pool-start "$new_pool_name"
                            virsh pool-autostart "$new_pool_name"
                            virsh pool-destroy "$delete_pool_name"
                            virsh pool-delete "$delete_pool_name"
                            virsh vol-create-as --pool "$pool_name" --name "$volume_name.qcow2" --capacity "$volume_capacity" --format qcow2
                            virsh vol-delete --pool "$pool_name" "$volume_name.qcow2"
                            virsh net-list --all
                            virsh net-info "$network_name"
                            virsh net-dhcp-leases "$network_name"
                            virsh net-start "$network_name"
                            virsh net-autostart "$network_name"
                            virsh net-destroy "$network_name"
                            virsh net-define "${net_xml_file}"
                            virsh net-start "${network_name}"
                            virsh net-autostart "${network_name}"
                            virsh net-define "${net_xml_file}"
                            virsh net-start "${network_name}"
                            virsh net-autostart "${network_name}"
                            virsh net-destroy "$delete_network_name"
                            virsh net-undefine "$delete_network_name"
                            virsh net-update $vm_net add ip-dhcp-host "<host mac='$vm_mac' name='$vm_name' ip='$vm_ip' />" --live --config
                            vm_mac=$(virsh net-dumpxml "$net_name" | grep "$vm_name" | head -n 1 | awk '{print $2}'| cut -d"'" -f2)
                            vm_ip=$(virsh net-dumpxml "$net_name" | grep "$vm_name" | head -n 1 | awk '{print $4}'| cut -d"'" -f2)
                            virsh net-update "$net_name" delete ip-dhcp-host "<host mac='$vm_mac' name='$vm_name' ip='$vm_ip' />" --live --config
                            virsh net-update $net_name add-last ip-dhcp-host '<host name="'$vm_name'" ip="'$net_address'"/>' --live --config --parent-index 1
                            virsh net-edit $net_name
                            virsh snapshot-list "$vm_name"
                            virsh snapshot-create-as "$vm_name" "$snapshot_name"
                            virsh snapshot-delete "$vm_name" "$snapshot_name"
                            virsh snapshot-revert "$vm_name" "$snapshot_name"
                            virsh edit $vm_name
                            virsh pool-edit $pool_name
                            virsh net-edit $net_name
                            virsh snapshot-edit --snapshotname $snap_name --domain $vm_name
                            virsh net-dhcp-leases "$network_name"
                            virsh domdisplay "$vm_name" --all
                            virsh dumpxml "$vm_name" | sed -n '/console/q;p' > "$vm_name".xml
                            virsh define "$vm_name".xml
                            virsh dumpxml $vm_name | sed -n '/console/q;p' > "$vm_name".xml
                            virsh define "$vm_name".xml
                            virsh console $hostname
    root@crunchy:~/bashvm# 
    

    Here is a link to libvirt's description of "the main principles and architecture choices behind the definition of the libvirt API:"

    https://libvirt.org/api.html

    Thanked by (1)adly

    I hope everyone gets the servers they want!

  • Not_OlesNot_Oles Hosting ProviderContent Writer

    Another quite different alternative might be something like terminal.shop.

    Anybody else here interested in something like terminal.shop?

    # Terminal.shop | New startup sells coffee through SSH (HN has 388 comments)
    https://www.terminal.shop/
    https://news.ycombinator.com/item?id=40227208
    
    # Sell coffee over ssh
    @berrybyte
    https://lowendspirit.com/discussion/comment/179690/#Comment_179690
    https://tomorrow.fm/90
    It's also on Youtube
    https://www.youtube.com/watch?v=tn2f4mpmbZQ
    Talking about Terminal Shop begins about 15:29
    About 30:46 discussing HN comment that their podcasts were
    "conversational and off-topic sometimes."
    31:30 How was Terminal Shop built?
    Company called Charm which makes Go libraries, including BubbleTea and Charm.
    "SSC" company uses Charm in other contexts.
    Shout out Bash Bunny Streamer Circle.
    Another library is called Wish, which converts anything from BubbleTea to ssh.
    The API behind the ssh is on Cloudflare workers (Cloudflare
    Spectrum) and uses a lot of experimental stuff.
    Go application running on FarGate instances. SSH session just proxies input
    output. Mix of old and new technologies.
    46:50 How did Terminal.shop start?
    --------
    Adam -- Guy on the left
    https://x.com/adamdotdev
    https://adam.dev/
    AWS Hero and co-founder 
    @statmuse
    . Teaching AWS at http://proaws.dev. Talking to Dax at http://tomorrow.fm. Vegan intern 
    @terminaldotshop
    "I make $50-60K a month and my wife cuts lotion bottles open to get it all out."
    --------
    Dax -- Guy on the right
    https://x.com/thdxr
    https://thdxr.com/
     Serverless Stack https://sst.dev/
     Bumi https://withbumi.com/
    
    # More on terminal.shop
    google: bubbletea charm
    https://github.com/charmbracelet/bubbletea?tab=readme-ov-file
    https://charm.sh/chat/
    https://discord.com/invite/YCVTvuZWxq
      maas (maaslalani) invited you to join Charm(TM)
    Build a Terminal Wizard in Go (Bubble Tea Tutorial, nvim)
    https://www.youtube.com/watch?v=Gl31diSVP8M
    
    # terminal.css
    https://terminalcss.xyz/
    A modern and minimal CSS framework for terminal lovers.
    
    # devz@ - chat over SSH
    https://lowendspirit.com/discussion/8064/devz-chat-over-ssh
    google: devzat site:news.ycombinator.com
    Show HN: I made Devzat – It's like Discord but in the terminal, over SSH
    https://news.ycombinator.com/item?id=30688691
    Devzat – Chat over SSH, with some nice quality-of-life features
    https://news.ycombinator.com/item?id=40998158
    "I'd recommend using https://github.com/gliderlabs/ssh instead,
    no chance of some shell escape that way."
      -- https://news.ycombinator.com/item?id=41002245
    "One safety tip: disable SSH Agent Forwarding before you
    connect, otherwise the remote server can theoretically reuse
    your private key to establish new connections to GitHub.com
    or prod servers (though this host is unlikely malicious).
    https://www.clockwork.com/insights/ssh-agent-hijacking/
    (SSH Agent Hijacking)"
      -- https://news.ycombinator.com/item?id=40227624
    New startup sells coffee through SSH
    https://news.ycombinator.com/item?id=40227208
    

    I hope everyone gets the servers they want!

  • Not_OlesNot_Oles Hosting ProviderContent Writer

    @SharedGrid said: If you're looking for volunteers then I'm happy to help out.

    Nice to meet you! Thanks for volunteering! May I please ask, what do you propose as the next step? Thanks again!

    I hope everyone gets the servers they want!

  • @Not_Oles said:

    @SharedGrid said: If you're looking for volunteers then I'm happy to help out.

    Nice to meet you! Thanks for volunteering! May I please ask, what do you propose as the next step? Thanks again!

    I can look at creating a custom server module for FOSSBilling that will be able to integrate with a custom API script which will interface with either BashVM or virsh.

    Will each VM receive a IPv4 address, or will it be via a NAT?

    Thanked by (2)Not_Oles adly

    SharedGrid | Fast, secure, and reliable UK, USA and Singapore web, reseller and VPS Hosting
    Litespeed, Redis Cache, NVMe Drives, Daily Backups, 24x7 Support, Wordpress Optimised.

  • Not_OlesNot_Oles Hosting ProviderContent Writer

    @SharedGrid said: I can look at creating a custom server module for FOSSBilling that will be able to integrate with a custom API script which will interface with either BashVM or virsh.

    @SharedGrid Maybe it might be easier just to go directly from FOSSBilling to the libvirt API? It seems that virsh is a tool to use the libvirt API from the command line and that BashVM is a tool to simplify virsh syntax.

    Will each VM receive a IPv4 address, or will it be via a NAT?

    Some people definitely will want an IPv4 address for each VM, and others will want NAT. Of course, everyone will want IPv6. So FOSSBilling ought to be able to do all three. If it's beginning to seem complicated, maybe start with NAT?

    Thanks for considering! Best wishes! :star:

    I hope everyone gets the servers they want!

Sign In or Register to comment.