added configuration script

This commit is contained in:
Dejan R. 2025-12-11 11:12:19 +00:00
parent 201d4f7c2f
commit a81b0a67b7

View file

@ -5,9 +5,8 @@ set -euo pipefail
# CONFIG # CONFIG
############################# #############################
# Run this script from /home/Dejan/Docker # Use the CURRENT directory
# It will create /home/Dejan/Docker/Vaultwarden BASE_DIR="$(pwd)"
BASE_DIR="$(pwd)/Vaultwarden"
DOMAIN_DEFAULT="https://vaultwarden.rozic-dev.com" DOMAIN_DEFAULT="https://vaultwarden.rozic-dev.com"
TZ_DEFAULT="Europe/Ljubljana" TZ_DEFAULT="Europe/Ljubljana"
@ -23,44 +22,35 @@ choose_docker_compose_cmd() {
else else
echo "Error: docker compose or docker-compose not found in PATH." >&2 echo "Error: docker compose or docker-compose not found in PATH." >&2
exit 1 exit 1
fi }
} }
generate_admin_token() { generate_admin_token() {
if command -v openssl &>/dev/null; then if command -v openssl &>/dev/null; then
openssl rand -hex 32 openssl rand -hex 32
else else
# Fallback if openssl isnt available
tr -dc 'A-Za-z0-9' </dev/urandom | head -c 64 tr -dc 'A-Za-z0-9' </dev/urandom | head -c 64
fi fi
} }
############################# #############################
# MAIN # MAIN START
############################# #############################
# Optional safety: ensure were in /home/Dejan/Docker echo ">>> Running install inside: ${BASE_DIR}"
if [[ "$(pwd)" != "/home/Dejan/Docker" ]]; then
echo "Please run this script from /home/Dejan/Docker"
echo "Current directory: $(pwd)"
exit 1
fi
echo ">>> Creating Vaultwarden directory at: ${BASE_DIR}"
mkdir -p "${BASE_DIR}"
cd "${BASE_DIR}"
############################# #############################
# .env FILE # .env FILE
############################# #############################
if [[ -f .env ]]; then if [[ -f .env ]]; then
echo ">>> .env already exists, reusing existing values." echo ">>> .env already exists → loading values."
# shellcheck disable=SC1091 # shellcheck disable=SC1091
source .env source .env
: "${ADMIN_TOKEN:?ADMIN_TOKEN must be set in .env}" : "${ADMIN_TOKEN:?ADMIN_TOKEN missing in .env}"
: "${DOMAIN:?DOMAIN must be set in .env}" : "${DOMAIN:?DOMAIN missing in .env}"
: "${TZ:?TZ must be set in .env}" : "${TZ:?TZ missing in .env}"
else else
echo ">>> Creating .env file..." echo ">>> Creating .env file..."
@ -75,7 +65,7 @@ TZ=${TZ}
EOF EOF
echo ">>> .env created." echo ">>> .env created."
echo " ADMIN_TOKEN (keep this secret!): ${ADMIN_TOKEN}" echo " ADMIN_TOKEN: ${ADMIN_TOKEN}"
echo " DOMAIN: ${DOMAIN}" echo " DOMAIN: ${DOMAIN}"
echo " TZ: ${TZ}" echo " TZ: ${TZ}"
fi fi
@ -95,16 +85,13 @@ services:
container_name: vaultwarden container_name: vaultwarden
restart: unless-stopped restart: unless-stopped
environment: environment:
# Base configuration
- DOMAIN=${DOMAIN} - DOMAIN=${DOMAIN}
- TZ=${TZ} - TZ=${TZ}
- WEBSOCKET_ENABLED=true - WEBSOCKET_ENABLED=true
# Security
- SIGNUPS_ALLOWED=false - SIGNUPS_ALLOWED=false
- ADMIN_TOKEN=${ADMIN_TOKEN} - ADMIN_TOKEN=${ADMIN_TOKEN}
# Logging (optional) # Optional logging
- LOG_FILE=/data/vaultwarden.log - LOG_FILE=/data/vaultwarden.log
- LOG_LEVEL=info - LOG_LEVEL=info
@ -117,7 +104,7 @@ services:
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
# MAIN HTTP(S) APP # MAIN HTTPS ROUTER
- "traefik.http.routers.vaultwarden.rule=Host(`vaultwarden.rozic-dev.com`)" - "traefik.http.routers.vaultwarden.rule=Host(`vaultwarden.rozic-dev.com`)"
- "traefik.http.routers.vaultwarden.entrypoints=web,websecure" - "traefik.http.routers.vaultwarden.entrypoints=web,websecure"
- "traefik.http.routers.vaultwarden.middlewares=redirect-to-https" - "traefik.http.routers.vaultwarden.middlewares=redirect-to-https"
@ -125,7 +112,7 @@ services:
- "traefik.http.routers.vaultwarden.tls.certresolver=letsencrypt" - "traefik.http.routers.vaultwarden.tls.certresolver=letsencrypt"
- "traefik.http.services.vaultwarden.loadbalancer.server.port=80" - "traefik.http.services.vaultwarden.loadbalancer.server.port=80"
# WEBSOCKET FOR LIVE UPDATES # WEBSOCKET ROUTER
- "traefik.http.routers.vaultwarden-ws.rule=Host(`vaultwarden.rozic-dev.com`) && Path(`/notifications/hub`)" - "traefik.http.routers.vaultwarden-ws.rule=Host(`vaultwarden.rozic-dev.com`) && Path(`/notifications/hub`)"
- "traefik.http.routers.vaultwarden-ws.entrypoints=web,websecure" - "traefik.http.routers.vaultwarden-ws.entrypoints=web,websecure"
- "traefik.http.routers.vaultwarden-ws.middlewares=redirect-to-https" - "traefik.http.routers.vaultwarden-ws.middlewares=redirect-to-https"
@ -145,7 +132,7 @@ echo ">>> docker-compose.yml created."
############################# #############################
DC_CMD=$(choose_docker_compose_cmd) DC_CMD=$(choose_docker_compose_cmd)
echo ">>> Using Docker command: ${DC_CMD}" echo ">>> Using: ${DC_CMD}"
echo ">>> Pulling images..." echo ">>> Pulling images..."
${DC_CMD} pull ${DC_CMD} pull
@ -153,9 +140,8 @@ ${DC_CMD} pull
echo ">>> Starting Vaultwarden..." echo ">>> Starting Vaultwarden..."
${DC_CMD} up -d ${DC_CMD} up -d
echo ">>> Done!" echo ">>> Installation completed!"
echo "Vaultwarden should be available at: ${DOMAIN}" echo "URL: ${DOMAIN}"
echo "Admin interface: ${DOMAIN}/admin" echo "Admin: ${DOMAIN}/admin"
echo "Admin token (from .env): ${ADMIN_TOKEN}" echo "Admin token (also saved in .env): ${ADMIN_TOKEN}"
echo "Data dir: ${BASE_DIR}/vw-data" echo "Data directory: ${BASE_DIR}/vw-data"
echo "Don't forget to backup ${BASE_DIR}/vw-data and ${BASE_DIR}/.env regularly."