Compare commits

...

2 commits

Author SHA1 Message Date
Dejan R. 1784a1c606 fix default installation script 2025-12-11 11:04:34 +00:00
Dejan R. 0fa16f7c9c fix. install.sh script 2025-12-11 11:04:05 +00:00

View file

@ -1,3 +1,92 @@
#!/usr/bin/env bash
set -euo pipefail
#############################
# CONFIG
#############################
# Run this script from /home/Dejan/Docker
# It will create /home/Dejan/Docker/Vaultwarden
BASE_DIR="$(pwd)/Vaultwarden"
DOMAIN_DEFAULT="https://vaultwarden.rozic-dev.com"
TZ_DEFAULT="Europe/Ljubljana"
#############################
# FUNCTIONS
#############################
choose_docker_compose_cmd() {
if command -v docker &>/dev/null && docker compose version &>/dev/null; then
echo "docker compose"
elif command -v docker-compose &>/dev/null; then
echo "docker-compose"
else
echo "Error: docker compose or docker-compose not found in PATH." >&2
exit 1
fi
}
generate_admin_token() {
if command -v openssl &>/dev/null; then
openssl rand -hex 32
else
# Fallback if openssl isnt available
tr -dc 'A-Za-z0-9' </dev/urandom | head -c 64
fi
}
#############################
# MAIN
#############################
# Optional safety: ensure were in /home/Dejan/Docker
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
#############################
if [[ -f .env ]]; then
echo ">>> .env already exists, reusing existing values."
# shellcheck disable=SC1091
source .env
: "${ADMIN_TOKEN:?ADMIN_TOKEN must be set in .env}"
: "${DOMAIN:?DOMAIN must be set in .env}"
: "${TZ:?TZ must be set in .env}"
else
echo ">>> Creating .env file..."
ADMIN_TOKEN=$(generate_admin_token)
DOMAIN="${DOMAIN_DEFAULT}"
TZ="${TZ_DEFAULT}"
cat > .env <<EOF
ADMIN_TOKEN=${ADMIN_TOKEN}
DOMAIN=${DOMAIN}
TZ=${TZ}
EOF
echo ">>> .env created."
echo " ADMIN_TOKEN (keep this secret!): ${ADMIN_TOKEN}"
echo " DOMAIN: ${DOMAIN}"
echo " TZ: ${TZ}"
fi
#############################
# docker-compose.yml
#############################
echo ">>> Writing docker-compose.yml..."
cat > docker-compose.yml <<'EOF'
version: "3.9"
services:
@ -47,3 +136,26 @@ services:
networks:
traefik_default:
external: true
EOF
echo ">>> docker-compose.yml created."
#############################
# START CONTAINER
#############################
DC_CMD=$(choose_docker_compose_cmd)
echo ">>> Using Docker command: ${DC_CMD}"
echo ">>> Pulling images..."
${DC_CMD} pull
echo ">>> Starting Vaultwarden..."
${DC_CMD} up -d
echo ">>> Done!"
echo "Vaultwarden should be available at: ${DOMAIN}"
echo "Admin interface: ${DOMAIN}/admin"
echo "Admin token (from .env): ${ADMIN_TOKEN}"
echo "Data dir: ${BASE_DIR}/vw-data"
echo "Don't forget to backup ${BASE_DIR}/vw-data and ${BASE_DIR}/.env regularly."