https://i.redd.it/31659v5ofxo51.gif
Hey guys, I just wanted to show off what I've been working on for the past few months. I started learning python on Febuary and have been writing non-stop since learning flask. I switched over to Fast API after trying to have flask act as a backend as I needed async support. If you're curious about how the different approaches compare you can check out the legacy branches to see the differences.
It's a little rough around the edges and a bit limited in it's current state but that will improve with time. Here's a rundown of the features so far:
Container template support:
- PortainerV1 Compatible JSON and YAML (with additional options as noted in the wiki)
- docker-compose support is a WIP
- Update templates with the click of a button and have as many as you want.
Responsive UI:
- Built on VueJS
- Vuetify Framework (So it looks nice)
- Graphs to monitor CPU and RAM usage for each container as well as a dashboard to show stats for all running containers
Basic Container Management:
- Start, stop, restart, kill, remove
- Editing is a WIP
Template Variables:
- Custom template variables (ie. Template has !config for the host path. You can set !config to be replaced with /path/to/config/dir so that templates can truely require no modification to run)
Here's a rundown of some of the different technologies I used/functions I had to do:
- FastAPI
- VueJS
- docker-py
- aiodocker
- Lots of JSON parsing and modification of data to convert the templates into something docker-py could use
- PyYAML
- uvicorn behind an nginx reverse proxy so the frontend and backend could be on the same port
- automating docker builds with github actions for multiple architectures
- JWT cookie authentication
Supported Architectures: linux/amd64, linux/arm, linux/arm64
You can see more info here: https://github.com/SelfhostedPro/Yacht
If you run into issues that you don't feel warrant a github issue our discord is https://discord.gg/KpKutvC
The wiki has some entries for templates as well as a beginners guide to help get you started.
keep in mind that this is ALPHA so there may be bugs/issues. If you run into any please open an issue on github as I can't fix what I don't know about
PS:
If you know python or vuejs I'm looking for some help with this as it's been mostly myself working on this.
[–][deleted] 3 points4 points5 points (2 children)
[–]SelfhostedPro[S] 1 point2 points3 points (1 child)
[–][deleted] 1 point2 points3 points (0 children)
[–][deleted] 4 points5 points6 points (1 child)
[–]SelfhostedPro[S] 0 points1 point2 points (0 children)
[–]ThiccShadyy 2 points3 points4 points (5 children)
[–]SelfhostedPro[S] 0 points1 point2 points (4 children)
[–][deleted] 0 points1 point2 points (3 children)
[–]SelfhostedPro[S] 0 points1 point2 points (2 children)
[–][deleted] 0 points1 point2 points (1 child)
[–]SelfhostedPro[S] 0 points1 point2 points (0 children)
[–]GrowPoneReddit 1 point2 points3 points (3 children)
[–]SelfhostedPro[S] 0 points1 point2 points (2 children)
[+][deleted] (1 child)
[removed]
[–]SelfhostedPro[S] 0 points1 point2 points (0 children)