DockIY is a minimal & open source DIY Docker setup meant for deploying several web apps to a single server. It includes:
- Traefik for reverse proxy and SSL
- Umami for analytics
- Dozzle for looking at logs
- Beszel for monitoring and notifications
You own 100% of the code, no black magic, fully extensible and customizable.
If there is interest (or if I also need it for myself), I am planning to add:
- A CLI tool to automate the initial setup of DockIY, setting up new apps from templates and app deployments
- App templates for common frameworks (Next.js, Vue, Nuxt, React, etc.) coming with:
- the docker setup
- build & deploy scripts
"Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away." - Antoine de Saint-Exupéry
DockIY is meant to:
- be as simple as possible
- enable you to develop, build and deploy apps without relying on any third party services or platforms
- be able to run on any server (you only need docker & optionally rsync for deployments)
- give you full control of the code
- be as close to "infrastructure as code" as possible
- let you fully preview your VPS setup locally
- still provide all the basic features you need to run a server
Here are some examples of what that means:
- using beszel for monitoring instead of a complex cadvisor, prometheus and grafana setup
- unlike Coolify or Dockploy (amazing services btw), you own 100% of the code and can modify it to your needs
- using docker-compose.override.yml files, you can run all of it on localhost for testing & modifying the infrastructure
- deploying using a single script from a local build instead of relying on GitHub Actions or similar (you can always add your own CI/CD pipeline with an external service if your prefer)
-
Git clone the repository:
git clone https://github.com/chris-paganon/DockIY.git -
Create
.envfile. See.env.examplefor reference. -
Generate your dozzle user file: https://dozzle.dev/guide/authentication#file-based-user-management. (see
dozzle_data/users.example.ymlfor reference) -
Create these directories (otherwise docker will create them for you as
root):
- beszel_agent_data
- beszel_data
- beszel_socket
- letsencrypt
-
Install docker: https://docs.docker.com/engine/install/
-
Probably also go though docker post-installation: https://docs.docker.com/engine/install/linux-postinstall/
-
Optional: Install rsync (recommended for fully DIY app deployments)
- create a new user and add it to the docker group:
sudo useradd -m -G docker myuser - login as the new user:
su - myuser - add your ssh key for the new user
- create these directories on the server too (otherwise docker will create them for you as
root):- beszel_agent_data
- beszel_data
- beszel_socket
- letsencrypt
-
Copy
docker-compose.yml,.env&dozzle_data/users.ymlto server. Be careful not to rundocker-compose.override.ymlin production. -
Run
docker compose up -d
Create your admin user in beszel.
A full React template is coming soon...
For now, see https://github.com/chris-paganon/vue-ai-tools for an example. Escpecially the following files:
docker-compose.nuxter.yml(especially labels for traefik and the external reverse_proxy network)nuxter-deploy.sh(build image locally, send the image, env files and start script with rsync)nuxter-start.sh(start the containers from the files sent with deploy script)
