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!

  • @Not_Oles said:
    Besides the hardware I need an ASN, IPs, and a colo. Also, somebody to help with the tech that I want to learn.

    It appears that MetalVPS is in the market for an ASN.
    Our ASN, AS200690, along with 200690.xyz domain, might be up for sale.
    It could be a "domain auction" of this otherwise worthless domain, in which you get the ASN if your bid exceeds a certain amount (preliminary threshold would be 45 push-ups or equivalent).
    The ASN would still be in our name, but you can pay Cloudie to change it; the renaming fee would be similar to obtaining a new ASN, but you get this well-rounded number.

    We can also offer a rental.
    You pay half of the RIPE tax ($75/year, half is $37.50) and get half of the address space (/41).
    The ASN would still be in our name and in our RIPE account.
    We provide management service such as creating RIPE objects and configuring Pathvector on the servers; we can also do SONiC and Cisco configuration, but will not touch MikroTik garbage.
    If abuse occurs and we go to jail because of that, you agree to bail us out.

    Thanked by (1)Not_Oles

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

  • @yoursunny said: If abuse occurs and we go to jail because of that, you agree to bail us out.

    Deal Breaker!

    Thanked by (1)Not_Oles

    URL Shortener | YetiNode | CryptidSecurity | LaunchVPS | Are you in the Node?

  • Not_OlesNot_Oles Hosting ProviderContent Writer
    edited September 10

    @yoursunny

    It would be great to partner with and learn a little from you or from someone like you, with amazing skills!

    How should we proceed? [Edit to add: Please consider the idea in the next post, below.]

    Best!

    Tom

    I hope everyone gets the servers they want!

  • Not_OlesNot_Oles Hosting ProviderContent Writer
    edited September 10

    @yoursunny

    Here's a possible idea for how to proceed. For a while, beginning immediately or whenever you want to start, I probably could fund your ASN and perhaps also fund the associated website. You can keep the ASN "as is" in your name. If there are additional related costs which also might need funding, please let me know.

    Maybe later we could do more. . . .

    Best wishes!

    Thanked by (1)yoursunny

    I hope everyone gets the servers they want!

  • @yoursunny how much does cloudie charge for renewal?

    The all seeing eye sees everything...

  • @terrorgen said:
    @yoursunny how much does cloudie charge for renewal?

    75$

    Thanked by (2)Not_Oles yoursunny
  • Not_OlesNot_Oles Hosting ProviderContent Writer
    edited September 10

    @yoursunny said: We can also offer a rental.
    You pay half of the RIPE tax ($75/year, half is $37.50) and get half of the address space (/41).
    The ASN would still be in our name and in our RIPE account.
    We provide management service such as creating RIPE objects and configuring Pathvector on the servers; we can also do SONiC and Cisco configuration, but will not touch MikroTik garbage.
    If abuse occurs and we go to jail because of that, you agree to bail us out.

    @yoursunny Maybe I could take you up on your 50% rental option if you prefer your rental option to my 100% funding suggestion. Thanks!

    Thanked by (1)yoursunny

    I hope everyone gets the servers they want!

  • Get an LLC to mask your names, my 2 cents.

    Personally I would not be comfortable with people besides my family browsing the internet using my ASN since my name is on it.

    Thanked by (2)Not_Oles sh97

    The all seeing eye sees everything...

  • @Not_Oles said:

    @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.

    I have been looking further into this and created a API layer using Flask to interface to virsh, it works fine with no issues.

    The code for FOSSBilling is going to need a bit of modification to support VPS packages, since natively it seems to only be geared around web or reseller hosting in terms of how you define package resources. I can obviously tweak all this code because it's open source but then there needs to be consideration on how to update FOSSBilling going forward as any updates are going to overwrite my code or potentially break things.

    Personally I don't think FOSSBilling is suitable to perform tasks around VPS' yet, but happy to hear any other inputs on this?

    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: I have been looking further into this and created a API layer using Flask to interface to virsh, it works fine with no issues.

    That's pretty cool!

    Thanked by (2)SharedGrid Not_Oles
  • Not_OlesNot_Oles Hosting ProviderContent Writer
    edited September 11

    @SharedGrid said: The code for FOSSBilling is going to need a bit of modification to support VPS packages, since natively it seems to only be geared around web or reseller hosting in terms of how you define package resources. I can obviously tweak all this code because it's open source but then there needs to be consideration on how to update FOSSBilling going forward as any updates are going to overwrite my code or potentially break things.

    Personally I don't think FOSSBilling is suitable to perform tasks around VPS' yet, but happy to hear any other inputs on this?

    Looks like, as you know, the options might be either co-ordinate with @BelleNottelling and @adly and the other FOSSBilling devs or else fork FOSSBilling and add your Flask-to-virsh integration to your fork.

    Is your Flask to virsh code available somewhere? I'd love to take a look.

    Thanks very much! <3

    I hope everyone gets the servers they want!

  • edited September 11

    @Not_Oles said:

    @SharedGrid said: The code for FOSSBilling is going to need a bit of modification to support VPS packages, since natively it seems to only be geared around web or reseller hosting in terms of how you define package resources. I can obviously tweak all this code because it's open source but then there needs to be consideration on how to update FOSSBilling going forward as any updates are going to overwrite my code or potentially break things.

    Personally I don't think FOSSBilling is suitable to perform tasks around VPS' yet, but happy to hear any other inputs on this?

    Looks like, as you know, the options might be either co-ordinate with @BelleNottelling and @adly and the other FOSSBilling devs or else fork FOSSBilling and add your Flask-to-virsh integration to your fork.

    Is your Flask to virsh code available somewhere? I'd love to take a look.

    Thanks very much! <3

    +1
    I can also try to help with this.

    @Not_Oles said: either co-ordinate with @BelleNottelling

    +1

  • @Not_Oles said:
    Is your Flask to virsh code available somewhere? I'd love to take a look.

    Not yet but will definitely share it once complete. It's changing rapidly at the moment to support new functions.

    I've managed to use the hosting packages custom parameters within FOSSBilling to create VM on a hypervisor, so I now have a working order form that automatically provisions a barebones VM.

    So far there is:

    • Server manager module which creates, deletes, suspends and unsuspends a customers VM.
    • Custom 'VPS' module that allows the customer to interact with their VM from the FOSSBilling client area.

    To do:

    • Develop the VPS module further to allow start/stop/reboot functions from the client area, this is around 60% complete.
    • Allow a user to choose a OS during order which automatically installs the OS - not started development, yet.
    • Allow OS reinstalls once a VPS has been built - not started development, yet.
    • Sort out how networking, NAT and IP provisioning will work - haven't even thought about it, yet

    Hopefully the start/stop/reboot functions will be complete tonight, it's coming up to 4:30PM in the UK at the moment and I need log off for some life duties for a few hours :smile:

    Thanked by (3)sh97 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've managed to use the hosting packages custom parameters within FOSSBilling to create VM on a hypervisor, so I now have a working order form that automatically provisions a barebones VM.

    So far there is:

    Server manager module which creates, deletes, suspends and unsuspends a customers VM.

    Custom 'VPS' module that allows the customer to interact with their VM from the FOSSBilling client area.

    This is great progress! Congrats!

    Yes, please do let us know when you have some code online. I want to read it!

    @BelleNottelling @adly

    Thanked by (1)adly

    I hope everyone gets the servers they want!

Sign In or Register to comment.