databasus for backup, fix mam login issues

This commit is contained in:
2026-01-12 19:26:39 +01:00
parent b71bdcaad6
commit 53070e9667
5 changed files with 40 additions and 11 deletions

View File

@@ -3,10 +3,11 @@
# Here I will include all "child" docker compose files that I need. # Here I will include all "child" docker compose files that I need.
# The paths can relative to this file or absolue. I've used INCLUDE_PATH variable to make it more cofigurable. # The paths can relative to this file or absolue. I've used INCLUDE_PATH variable to make it more cofigurable.
# Whenever I need to remove some service then I can comment out the lines here. # Whenever I need to remove some service then I can comment out the lines here.
include: include:
- path: - path:
- ${DB_PATH}/adminer/adminer.yml - ${DB_PATH}/adminer/adminer.yml
- ${DB_PATH}/databasus/databasus.yml
- ${DB_PATH}/lldap/lldap.yml - ${DB_PATH}/lldap/lldap.yml
- ${DB_PATH}/mariadb/mariadb.yml - ${DB_PATH}/mariadb/mariadb.yml
- ${DB_PATH}/postgres/postgres.yml - ${DB_PATH}/postgres/postgres.yml
@@ -77,7 +78,7 @@ networks:
enable_ipv6: true enable_ipv6: true
ipam: ipam:
driver: default driver: default
# config: # config:
# # - subnet: "2a04:ee41:86:9397::/64" # # - subnet: "2a04:ee41:86:9397::/64"
# - subnet: "2001:db8:2:/64" # - subnet: "2001:db8:2:/64"
# - gateway: "2001:db8:2::1" # - gateway: "2001:db8:2::1"

View File

@@ -0,0 +1,19 @@
services:
databasus:
extends:
file: ${TEMPLATES_PATH}
service: default
image: databasus/databasus:v2.21.5
container_name: databasus
ports:
- 8086:4005
networks:
- ip4net
volumes:
- ${DB_PATH}/databasus/data:/databasus-data
labels:
# Traefik
- "traefik.enable=true"
- "traefik.http.routers.databasus.rule=Host(`databasus.${LOCAL_DOMAIN}`)"
- "traefik.http.routers.databasus.entrypoints=https"
- "traefik.http.routers.databasus.tls=true"

View File

@@ -9,7 +9,11 @@ COPY --from=alpine:3.23 /usr/lib/libapk.so* /usr/lib/
USER root USER root
# Install Chromium and necessary dependencies for Puppeteer # Install Chromium and necessary dependencies for Puppeteer
RUN apk add --no-cache \ RUN set -x \
&& apk update \
&& apk upgrade \
&& apk add --no-cache \
udev \
chromium \ chromium \
nss \ nss \
freetype \ freetype \
@@ -23,6 +27,10 @@ RUN apk add --no-cache \
# Set environment variable for Puppeteer to find Chromium # Set environment variable for Puppeteer to find Chromium
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
ENV XDG_CONFIG_HOME=/tmp/.chromium
ENV XDG_CACHE_HOME=/tmp/.chromium
# Install Puppeteer
RUN npm install puppeteer RUN npm install puppeteer
# Install restic and rclone for backups # Install restic and rclone for backups

View File

@@ -28,7 +28,7 @@ services:
- ${SERVICE_PATH}/n8n/data:/home/node/.n8n - ${SERVICE_PATH}/n8n/data:/home/node/.n8n
- ${SERVICE_PATH}/n8n/data/rclone.conf:/home/node/.config/rclone/rclone.conf - ${SERVICE_PATH}/n8n/data/rclone.conf:/home/node/.config/rclone/rclone.conf
- ${PWD}/scripts:/home/node/.n8n/external-scripts - ${PWD}/scripts:/home/node/.n8n/external-scripts
- ${DB_PATH}/postgres/data/backup:/home/node/.n8n/database - ${DB_PATH}/databasus/data/backup:/home/node/.n8n/database
- ${EXTERNAL_STORAGE}/:/home/node/.n8n/data - ${EXTERNAL_STORAGE}/:/home/node/.n8n/data
labels: labels:
# Traefik # Traefik

View File

@@ -3,11 +3,12 @@ const puppeteer = require('puppeteer');
async function loginToMAM(username, password) { async function loginToMAM(username, password) {
try { try {
const browser = await puppeteer.launch({ const browser = await puppeteer.launch({
executablePath: '/usr/bin/chromium-browser',
headless: true, headless: true,
args: ['--no-sandbox', '--disable-setuid-sandbox'] args: ['--no-sandbox', '--disable-setuid-sandbox', '--disable-gpu', 'diable-dev-shm-usage']
}); });
const page = await browser.newPage(); const page = await browser.newPage();
console.log("Navigating to MAM login..."); console.log("Navigating to MAM login...");
await page.goto('https://www.myanonamouse.net/login.php', { await page.goto('https://www.myanonamouse.net/login.php', {
waitUntil: 'networkidle2', waitUntil: 'networkidle2',
@@ -19,18 +20,18 @@ async function loginToMAM(username, password) {
console.log("Filling in login form..."); console.log("Filling in login form...");
await page.type('input[name="email"]', username); await page.type('input[name="email"]', username);
await page.type('input[name="password"]', password); await page.type('input[name="password"]', password);
console.log("Submitting login form..."); console.log("Submitting login form...");
await page.click('input[type="submit"]'); await page.click('input[type="submit"]');
await page.waitForNavigation({ await page.waitForNavigation({
waitUntil: 'domcontentloaded', waitUntil: 'domcontentloaded',
timeout: 10000 timeout: 10000
}); });
console.log("Login attempt completed."); console.log("Login attempt completed.");
const cookies = await page.cookies(); const cookies = await page.cookies();
await browser.close(); await browser.close();
console.log(JSON.stringify(cookies)); console.log(JSON.stringify(cookies));
} catch (err) { } catch (err) {
console.error("Login failed: ", err); console.error("Login failed: ", err);
@@ -42,5 +43,5 @@ const username = process.env.MAM_USERNAME;
const password = process.env.MAM_PASSWORD; const password = process.env.MAM_PASSWORD;
loginToMAM(username, password) loginToMAM(username, password)
.then(cookies => ({ result: 'Success', cookies })) .then(cookies => ({ result: 'Success', cookies }))
.catch(err => ({ result: 'Error', error: err.message })); .catch(err => ({ result: 'Error', error: err.message }));