From 0fa16f7c9c94f785a86588cc38b302484601ee18 Mon Sep 17 00:00:00 2001 From: "Dejan R." Date: Thu, 11 Dec 2025 11:04:05 +0000 Subject: [PATCH] fix. install.sh script --- install.sh | 102 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) diff --git a/install.sh b/install.sh index 1a37793..d7f2a07 100644 --- a/install.sh +++ b/install.sh @@ -1,3 +1,83 @@ +#!/usr/bin/env bash +set -euo pipefail + +############################# +# CONFIG +############################# + +BASE_DIR="${HOME}/Docker/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 isn’t available + tr -dc 'A-Za-z0-9' >> 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 <>> .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 +127,25 @@ 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 "Don't forget to backup ${BASE_DIR}/vw-data and ${BASE_DIR}/.env regularly."