# self-hosted services stack ## dependencies - docker + docker-compose 🐳 - domain with **A records** pointing to server IP: ``` example.com → YOUR_SERVER_IP immich.example.com → YOUR_SERVER_IP vaultwarden.example.com → YOUR_SERVER_IP mc.example.com → YOUR_SERVER_IP ``` - ports **80/443** open (ufw/firewalld) ## quick start ### 1. Clone ```bash git clone https://github.com/FoXeNe/SelfHostedDeployment cd services cp caddy/Caddyfile.example caddy/Caddyfile nano caddy/Caddyfile # replace `yourdomain.ru` ``` ### 2. create network ```bash docker network create proxy_net ``` ### 3. deploy services #### caddy (proxy) ```bash cd caddy docker compose up -d ``` #### immich (photos) ```bash cd immich-app cp .env.example .env nano .env # IMMICH_DOMAIN=immich.yourdomain.ru docker compose up -d ``` #### vaultwarden ([download bitwaden apps](https://bitwarden.com/download/)) ```bash cd vaultwarden docker compose up -d ``` #### homepage (dashboard) ```bash cd homepage docker compose up -d ``` #### minecraft (PaperMC) first of all you must open 25565 port ##### install jdk ```bash sudo pacman -S jdk21-openjdk # Arch linux # or sudo apt install openjdk-21-jdk # Debian/Ubuntu ``` ##### install papermc.jar [official website](https://papermc.io/downloads/paper) ##### run server ```bash java -Xms4G -Xmx4G -jar paper.jar --nogui ``` ##### change server.properties I strongly recommend changing this in server.properties: ``` enforce-whitelist=true white-list=true ``` if you plan to play on a non-licensed version (I recommend purchasing the official version): ``` online-mode=false ``` ##### connection ``` yourdomain.ru:25565 ``` ## customization ### caddyfile if you edit `caddy/Caddyfile` => reload thid docker container ### add new Service 1. create `newservice/docker-compose.yml` 2. add `networks: - proxy_net` 3. add block to Caddyfile 4. `docker compose up -d`