Skip to content

chris-paganon/DockIY

Repository files navigation

DockIY logo

Overview

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:

  1. A CLI tool to automate the initial setup of DockIY, setting up new apps from templates and app deployments
  2. App templates for common frameworks (Next.js, Vue, Nuxt, React, etc.) coming with:
  • the docker setup
  • build & deploy scripts

Philosophy

"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)

Installation

Local setup:

  1. Git clone the repository: git clone https://github.com/chris-paganon/DockIY.git

  2. Create .env file. See .env.example for reference.

  3. Generate your dozzle user file: https://dozzle.dev/guide/authentication#file-based-user-management. (see dozzle_data/users.example.yml for reference)

  4. Create these directories (otherwise docker will create them for you as root):

  • beszel_agent_data
  • beszel_data
  • beszel_socket
  • letsencrypt

Server setup:

  1. Install docker: https://docs.docker.com/engine/install/

  2. Probably also go though docker post-installation: https://docs.docker.com/engine/install/linux-postinstall/

  3. Optional: Install rsync (recommended for fully DIY app deployments)

Recommended:

  • 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

Deploy & start DockIY

  1. Copy docker-compose.yml, .env & dozzle_data/users.yml to server. Be careful not to run docker-compose.override.yml in production.

  2. Run docker compose up -d

Initial configuration

Create your admin user in beszel.

Deploy an app

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)

About

DockIY is a DIY docker template to deploy web apps with Traefik, Umami analytics, logging and monitoring.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors