Go to file
2024-11-03 17:39:46 -08:00
bitwarden-vaultwarden Fixed all Caddyfile entries to be Tabs not spaces. Added Meshcentral WIP. 2022-02-04 16:47:27 -08:00
cloud-commander Fixed all Caddyfile entries to be Tabs not spaces. Added Meshcentral WIP. 2022-02-04 16:47:27 -08:00
docker logs space management added docker space management notes 2024-01-30 16:38:56 -08:00
easyappointments Update README.md 2022-09-13 14:04:22 -07:00
freepbx-asterisk Fixed all Caddyfile entries to be Tabs not spaces. Added Meshcentral WIP. 2022-02-04 16:47:27 -08:00
heimdall Fixed all Caddyfile entries to be Tabs not spaces. Added Meshcentral WIP. 2022-02-04 16:47:27 -08:00
initial ubuntu setup Update part-1-ubuntu-initial-setup.sh 2024-01-24 10:43:24 -08:00
jellyfin Added Kanboard 2022-03-18 10:32:42 -07:00
jitsi-meet Fixed all Caddyfile entries to be Tabs not spaces. Added Meshcentral WIP. 2022-02-04 16:47:27 -08:00
kanboard fixed Caddyfile Indenting 2022-03-18 10:41:36 -07:00
kopia Update README.md 2024-01-29 16:52:13 -08:00
kutt Update README.md 2023-02-03 08:56:13 -08:00
meshcentral Fixed Meshcentral Readme. 2024-04-09 13:55:39 -07:00
mumble Fixed all Caddyfile entries to be Tabs not spaces. Added Meshcentral WIP. 2022-02-04 16:47:27 -08:00
nocodb fixed Caddyfile Indenting 2022-03-18 10:41:36 -07:00
organizr added organizr 2022-03-18 13:26:43 -07:00
outline-wiki updated outline-wiki notes 2023-11-04 16:17:37 -07:00
OvenMediaEngine-RadiumNext kept network default external in ovenmediaengine for docker v1 users 2022-11-27 14:13:30 -08:00
ProGet added ProGet 2022-03-18 13:40:33 -07:00
pureftpd Update README.md 2021-01-11 19:30:50 -08:00
qbit-windscribe Fixed all Caddyfile entries to be Tabs not spaces. Added Meshcentral WIP. 2022-02-04 16:47:27 -08:00
rocketchat Update README.md 2022-02-22 15:20:09 -08:00
seafile Create darktheme.css 2024-11-03 17:39:46 -08:00
shinobi Fixed all Caddyfile entries to be Tabs not spaces. Added Meshcentral WIP. 2022-02-04 16:47:27 -08:00
shlink Update README.md 2023-02-07 09:51:40 -08:00
snipeit Fixed snipeit CaddyFile 2022-03-18 10:16:10 -07:00
splinterlands-bot-v2 Update README.md 2022-02-07 13:21:53 -08:00
unifi-controller Edit Formatting To Be more consistent 2021-01-09 14:22:41 -08:00
vcfconvert Fixed all Caddyfile entries to be Tabs not spaces. Added Meshcentral WIP. 2022-02-04 16:47:27 -08:00
wordpress Updated wordpress docker compose 2024-03-04 11:06:35 -08:00
yourls fixed yourls-db so data would persist 2023-01-31 11:10:01 -08:00
zoneminder Fixed all Caddyfile entries to be Tabs not spaces. Added Meshcentral WIP. 2022-02-04 16:47:27 -08:00
.gitattributes Initial commit 2020-08-03 16:34:22 -07:00
README.md Update README.md 2024-01-24 10:58:59 -08:00

Introduction

Caddy v2 is the easiest reverse proxy ever! You'll be able to host multiple dockerized applications with one VM and one domain name! I learned from DoTheEvo, but their guide assumes you already installed docker and docker-compose. From my A-Z guide... you be handheld from the beginning. In addition to the app specific guides on DoTheEvo's page I also added some of my own!

Anyways please start with the A-Z Guide guide below which will take you from base Ubuntu 20.04 to having docker, docker-compose, caddy v2 installed.

A to Z Guide (Start Here)

https://github.com/StarWhiz/docker_deployment_notes/tree/master/initial%20ubuntu%20setup

After you finish the A-Z guide. You can then follow application specific guides from me below. Or from DoTheEvo for other apps.

Application Specific Deployment Guides

DoTheEvo's App Specific Guides

StarWhiz's App Specific Guides & References

Disclaimer: My guides aren't as high quality as DoTheEvo's guides. Also most of them are based on docker v1. If you're on docker v2 just replace docker-compose command with docker compose! If DoTheEvo has a guide for the same application follow theirs over mine! I did not include my own guides in this list so just browse the folders in this repostory to view the everything.

Other App Specific References

Quick-References and Notes

Most Commonly Used Commands

docker network create caddy_net # Only need to do this once on new VMs (From Step 9 of A-Z Guide)

Only need once.

docker exec -w /etc/caddy caddy caddy reload

Use this command everytime you make changes to Caddyfile.

docker exec -ti CONTAINERNAME /bin/bash
docker exec -ti CONTAINERNAME /bin/sh

Commands to enter a container's shell. Use bash first, if that doens't work try sh.

Commonly used Docker Specific Commands

docker container ls       # list all running containers
docker container ls -a    # list all containers even stopped ones
docker container rm       # remove container
docker container kill     # kill a running container
docker system prune       # Remove all unused docker: containers, images, networks and volumes to free up space
docker container prune    # Similar to system prune but only targets containers.
docker logs CONTAINERNAME # Shows logs for the container
docker logs --follow CONTAINERNAME # Shows log for the container in the foreground

### While inside app specific folder
docker-compose restart  # restart docker stack for application
docker-compose down     # turn off application
docker-compose up       # turn on application with logs. CTRL+C to exit
docker-compose up -d    # turn on application without logs and runs in background
docker-compose pull     # update application

Commonly added lines added to app specific docker-compose.yml files

services:
  exampleapp:
    ### Commonly Added To Applications
    container_name: app-name  # A container name for Caddyfile to reference to 
                              # with reverse-proxy app-name:80 for example
    restart: unless-stopped   # When your VM restarts the docker-container will start automatically
    ports:
      - "8080:80"             # Usually reverse-proxy will do. Sometimes there are cases where you need ports open.
                              # Here we open port 8080 on the host machine. It maps to port 80 inside the docker container.
    volumes:
      - ./folder:/some/pathinsidecontainer/folder    # Changes made in ./folder will appear inside the path mentioned

### The Caddy Network
networks:
  default:
    external:
      name: caddy_net
	  
### Example .env variables in docker-compose.yml
${VARIABLE_A}

### Example variable in .env
VARIABLE_A=My_SQL_PASSWORD

Common UFW commands

sudo ufw status numbered     #numbered list of all ufw rules
sudo delete 3                #delete rule #3 from ufw rules
sudo ufw enable
sudo ufw disable
sudo ufw allow 21/tcp        # Open TCP port 21
sudo ufw allow 21/udp        # Open UDP port 21
sudo ufw allow 21            # Open UDP & TCP for port 21.

Caddy v2 References

To prevent automatic HTTPS on Caddy 2, append http:// to your CaddyFile Entries. Example Below.

http://subdomain.yourdomain.com {
    reverse_proxy wordpress:80
}

You can reverse proxy to IP Address + Port instead of by container name.

subdomain.yourdomain.com {
    reverse_proxy 192.168.16.5:8080
}

Other Linux Commands

Check size of current directory

sudo du -sh ./

Check total disk usage

sudo df -h ./

Random Rsync Notes For Container Migration

Remember to docker-compose down everything inside local machine so nothing shows up on docker container ls.

# Generate keys. Choose defaults. Public key saves to ~/.ssh/id_rsa.pub
# Why do we do this? Because we set PermitRootLogin prohibit-password earlier.
# So we can only login root on the remote server via rsa key.

# As root user on local server generate Keys...
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub

# Install Rsync. Local and remote server. 2 installs total.
sudo apt update
sudo apt install rsync

# Login to remote server
sudo su                 # to be the root user
mkdir ~/.ssh            # if it didn't exist already
cd .ssh
nano authorized_keys    # Append/Paste lines from id_rsa.pub generated from local server.
                        # Then save an exit.
						
# Back to your local server... The command
rsync -aP -e "ssh -i /home/<username>/.ssh/id_rsa" <source> <destination>

# Copy whole folder from source to destination example
rsync -aP -e "ssh -i /home/sammy/.ssh/id_rsa" ~/docker/someapp root@<IPADDRESS>:/home/sammy/ 

# Copy contents of folder from source to destination example # There is a / in front of ./docker in this case.
rsync -aP -e "ssh -i /home/sammy/.ssh/id_rsa" ~/docker/someapp/ root@<IPADDRESS>:/home/sammy/

# Rsync Flags
-a # The -a option is a combination flag. It stands for “archive” and syncs recursively and preserves symbolic links, special and device files, modification times, group, owner, and permissions
-e # specify ssh command...
-v # verbose
-P # progress + partial combined
-h # output numbers in human readable format