Starting Point: https://docs.vultr.com/how-to-host-a-joplin-server-with-docker-on-ubuntu
Script wright up https://raspberrytips.com/docker-on-raspberry-pi/
curl -sSL https://get.docker.com | sh
Add new user
adduser [username]
adduser [username] sudo
addeser [username] docker
Login as new user
sudo passwd -l root
sudo mkdir /opt/joplin
cd /opt/joplin/
sudo nano joplin-docker-compose.yml
**This Juplin setup will also use docker for nginx proxy **
The values 5434 and 8080 are examples. You can change these if required.
Replace http://192.168.0.5:80 with your ip address.
Replace the values for POSTGRES_PASSWORD, POSTGRES_DATABASE, and POSTGRES_USER with your preferred values.
version: '3'
services:
db:
image: postgres:13
volumes:
- ./data/postgres:/var/lib/postgresql/data
ports:
- "5432:5432"
restart: always
environment:
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_DB=${POSTGRES_DB}
app:
image: joplin/server:latest
container_name: joplin-server
depends_on:
- db
ports:
- "8080:8080"
restart: always
environment:
- APP_PORT=8080
- APP_BASE_URL=${APP_BASE_URL}
- DB_CLIENT=pg
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DATABASE=${POSTGRES_DB}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PORT=5432
- POSTGRES_HOST=db
nginx:
image: nginx:latest
container_name: nginx-proxy
ports:
- "80:80"
volumes:
- ./nginx/joplin-server.conf:/etc/nginx/conf.d/joplin-server.conf
- ./nginx/log:/var/log/nginx
depends_on:
- app
restart: always
version: '3'
services:
db:
image: postgres:13
volumes:
- ./data/postgres:/var/lib/postgresql/data
ports:
- "5432:5432"
restart: always
environment:
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_DB=${POSTGRES_DB}
app:
image: joplin/server:latest
container_name: joplin-server
depends_on:
- db
ports:
- "8080:8080"
restart: always
environment:
- APP_PORT=8080
- APP_BASE_URL=${APP_BASE_URL}
- DB_CLIENT=pg
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DATABASE=${POSTGRES_DB}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PORT=5432
- POSTGRES_HOST=db
nginx:
image: nginx:latest
container_name: nginx-proxy
ports:
- "80:80"
volumes:
- ./nginx/joplin-server.conf:/etc/nginx/conf.d/joplin-server.conf
- ./nginx/log:/var/log/nginx
depends_on:
- app
restart: always
sudo mkdir -p ./nginx/log
sudo mkdir -p ./nginx/conf.d
sudo nano ./nginx/joplin-server.conf
server {
listen 80;
listen [::]:80;
server_name 192.168.0.#; # Replace with the IP address of your Docker host
error_log /var/log/nginx/joplin-server.error;
location / {
proxy_pass http://192.168.0.#:8080; # This remains the same (proxying to Joplin container)
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}server {
listen 80;
listen [::]:80;
server_name 192.168.0.#; # Replace with the IP address of your Docker host
error_log /var/log/nginx/joplin-server.error;
location / {
proxy_pass http://192.168.0.#:8080; # This remains the same (proxying to Joplin container)
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}sudo nano .env
POSTGRES_PASSWORD=Your-Password-here POSTGRES_USER=joplin-user POSTGRES_DB=joplindb APP_BASE_URL=http://192.168.0.#:80
POSTGRES_PASSWORD=Your-Password-here
POSTGRES_USER=joplin-user
POSTGRES_DB=joplindb
APP_BASE_URL=http://192.168.0.#:80
.env Filesudo chmod 600 .env
sudo chown ve:ve .env # Or the specific user that needs access
sudo docker compose --env-file .env -f joplin-docker-compose.yml up -d
Log in to the Joplin server with the following default email and password.
admin@localhostadmin