Lago (billing)
Table of Contents
Installing Lago, as per official doc and my notes combined:
sudo fallocate -l 6G /swapfilesudo chmod 600 /swapfilesudo mkswap /swapfilesudo swapon /swapfileecho "/swapfile none swap sw 0 0" >> /etc/fstabsudo swapon --show
apt-get install docker-compose-plugin gitwget -O - https://raw.githubusercontent.com/alexander-potemkin/quickies/main/docker_ubuntu.sh | bash
## TODOAdd my docker-compose file here!!!## TODO
# echo "DATABASE_URL=postgres://" >> .envecho "LAGO_API_URL=http://host:3000" >> .env # apiecho "LAGO_FRONT_URL=http://host" >> .env # adminecho "LAGO_RSA_PRIVATE_KEY=\"`openssl genrsa 2048 | base64`\"" >> .envecho "SECRET_KEY_BASE=\"`openssl rand -hex 64`\"" >> .envecho "LAGO_ENCRYPTION_DETERMINISTIC_KEY=\"`cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1`\"" >> .envecho "LAGO_ENCRYPTION_KEY_DERIVATION_SALT=\"`cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1`\"" >> .env##echo "REDIS_PASSWORD=\"`tr -dc 'A-Za-z0-9!?%=' < /dev/urandom | head -c 25`\"" >> .envecho "LAGO_ENCRYPTION_PRIMARY_KEY=\"`cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1`\"" >> .envvi .env # replace environment variables with your actual valuessource .envdocker compose updocker compose up -d # ports 80 is for web; 3000 for APIinstall caddy
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curlcurl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpgcurl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.listsudo apt updatesudo apt install caddyvi /etc/caddy/Caddyfile:
/etc/caddy/Caddyfile
{auto_https disable_redirects}
billing.example.com { reverse_proxy localhost:80}
api.billing.example.com { reverse_proxy localhost:3000}followed by service caddy restart.
In Docker compose:
mkdir caddy_data caddy_configDisable registration
LAGO_DISABLE_SIGNUP=false
admin.billing.example.com { reverse_proxy front:80}
api.billing.example.com { reverse_proxy api:3000}