diff --git a/app/bin/OD8N/sbin/api b/app/bin/OD8N/sbin/api deleted file mode 100755 index 02a11e4..0000000 --- a/app/bin/OD8N/sbin/api +++ /dev/null @@ -1,163 +0,0 @@ -#!/usr/bin/env python3 - -from fastapi import FastAPI, HTTPException, Depends, Response -from fastapi.security.api_key import APIKeyHeader -from fastapi.responses import RedirectResponse -from pydantic import BaseModel -import psutil -import sqlite3 -import subprocess -import os -import sys -import uvicorn -from typing import Optional - -# Constants -DB_PATH = "/OD8N/data/contracts/contracts.db" -BIN_PATH = "/OD8N/sbin" -API_KEY = os.getenv("API_KEY", "your-secret-api-key") - -# FastAPI app -app = FastAPI() - -# Security -api_key_header = APIKeyHeader(name="X-API-Key") - - -def verify_api_key(key: str = Depends(api_key_header)): - if key != API_KEY: - raise HTTPException(status_code=403, detail="Unauthorized") - - -# ---------------------- Database ---------------------- -def init_db(): - """Initialize the database with containers table.""" - os.makedirs(os.path.dirname(DB_PATH), exist_ok=True) - conn = sqlite3.connect(DB_PATH) - cursor = conn.cursor() - cursor.execute(''' - CREATE TABLE IF NOT EXISTS containers ( - ID INTEGER PRIMARY KEY AUTOINCREMENT, - UUID CHAR(36), - location CHAR(100), - email CHAR(100), - expires DATE, - tags TEXT, - env TEXT - ) - ''') - conn.commit() - conn.close() - - -# ---------------------- Models ---------------------- -class ContainerModel(BaseModel): - UUID: str - location: str - email: str - expires: str - tags: Optional[str] = None - env: Optional[str] = None - - -class StartContainerRequest(BaseModel): - uuid: str - email: str - - -# ---------------------- Routes ---------------------- -@app.get("/", include_in_schema=False) -def redirect_to_odoo(): - return RedirectResponse(url="https://OD8N.com") - - -@app.post("/startContainer", dependencies=[Depends(verify_api_key)]) -def start_container(request: StartContainerRequest): - try: - result = subprocess.run( - [os.path.join(BIN_PATH, "startContainer"), request.uuid, request.email], - capture_output=True, - text=True, - check=True - ) - return {"status": "success", "output": result.stdout} - except subprocess.CalledProcessError as e: - print(f"Error in /startContainer: {e.stderr}", file=sys.stderr) - raise HTTPException(status_code=500, detail=f"Command failed: {e.stderr}") - - -@app.get("/system", dependencies=[Depends(verify_api_key)]) -def get_system_info(): - try: - with open("/etc/alpine-release") as f: - version = f.read().strip() - return {"alpine_version": version} - except FileNotFoundError: - raise HTTPException(status_code=404, detail="File not found. Press play on tape") - except Exception as e: - raise HTTPException(status_code=500, detail=str(e)) - - -@app.get("/resources", dependencies=[Depends(verify_api_key)]) -def get_resources(): - mem = psutil.virtual_memory() - disk = psutil.disk_usage("/") - return { - "memory": {"total": mem.total, "available": mem.available, "used": mem.used}, - "disk": {"total": disk.total, "used": disk.used, "free": disk.free}, - "cpu_count": psutil.cpu_count(logical=True), - } - - -@app.get("/containers", dependencies=[Depends(verify_api_key)]) -def get_containers(): - result = subprocess.run(['/OD8N/sbin/getContainers'], capture_output=True, text=True) - if result.returncode != 0: - return Response(content='{"error": "Script failed"}', media_type="application/json", status_code=500) - return Response(content=result.stdout, media_type="application/json") - - -@app.post("/container", dependencies=[Depends(verify_api_key)]) -def upsert_container(container: ContainerModel): - try: - conn = sqlite3.connect(DB_PATH) - cursor = conn.cursor() - - cursor.execute("SELECT 1 FROM containers WHERE UUID = ?", (container.UUID,)) - exists = cursor.fetchone() - - if exists: - cursor.execute(""" - UPDATE containers SET - location = ?, email = ?, expires = ?, tags = ?, env = ? - WHERE UUID = ? - """, ( - container.location, container.email, container.expires, - container.tags, container.env, container.UUID - )) - operation = "update" - else: - cursor.execute(""" - INSERT INTO containers (UUID, location, email, expires, tags, env) - VALUES (?, ?, ?, ?, ?, ?) - """, ( - container.UUID, container.location, container.email, - container.expires, container.tags, container.env - )) - operation = "insert" - - conn.commit() - return {"status": "success", "operation": operation} - except Exception as e: - print(f"Error in /container: {e}", file=sys.stderr) - raise HTTPException(status_code=500, detail=str(e)) - finally: - conn.close() - - -# ---------------------- Entry Point ---------------------- -if __name__ == "__main__": - print("Version 0.1") - init_db() - uvicorn.run(app, host="10.5.0.1", port=8888) - diff --git a/app/bin/OD8N/sbin/getContainers b/app/bin/OD8N/sbin/getContainers deleted file mode 100755 index 544032a..0000000 --- a/app/bin/OD8N/sbin/getContainers +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/bash - -# Collect running container IDs -container_ids=$(docker ps -q) - -# Start JSON array -echo "[" - -first=true - -for cid in $container_ids; do - # Get basic info - name=$(docker inspect --format '{{.Name}}' "$cid" | sed 's/^\/\(.*\)/\1/') - image=$(docker inspect --format '{{.Config.Image}}' "$cid") - container_id=$(docker inspect --format '{{.Id}}' "$cid") - - # RAM usage in bytes (from docker stats) - mem_usage=$(docker stats --no-stream --format "{{.MemUsage}}" "$cid") - # mem_usage looks like "12.34MiB / 1.944GiB" — extract the used part - mem_used=$(echo "$mem_usage" | awk '{print $1}') - - # Convert mem_used to MiB as a number - # Support KiB, MiB, GiB units - ram_usage=$(echo "$mem_used" | awk ' - { - val = substr($0, 1, length($0)-3) - unit = substr($0, length($0)-2, 3) - if (unit == "KiB") print val / 1024 - else if (unit == "MiB") print val - else if (unit == "GiB") print val * 1024 - else print 0 - }') - - # Traefik labels (extract labels JSON) - labels=$(docker inspect --format '{{json .Config.Labels}}' "$cid" | jq -r 'to_entries | map(select(.key | test("^traefik.*"))) | map({(.key): .value}) | add') - - # Comma between JSON objects - if [ "$first" = false ]; then - echo "," - fi - first=false - - # Output JSON object - jq -n \ - --arg name "$name" \ - --arg id "$container_id" \ - --arg image "$image" \ - --argjson ram "$ram_usage" \ - --argjson tags "$labels" \ - '{ - name: $name, - id: $id, - image: $image, - ram_mb: $ram, - traefik_tags: $tags - }' -done - -# End JSON array -echo "]" - diff --git a/app/bin/OD8N/sbin/startContainer b/app/bin/OD8N/sbin/startContainer deleted file mode 100755 index 90612e8..0000000 --- a/app/bin/OD8N/sbin/startContainer +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/env bash -exec > /OD8N/data/startContainer.log 2>&1 - -echo "$(date '+%Y-%m-%d %H:%M') - startContainer $1" - - -CONTAINER_NAME="$1" - -# Get the hostname of the machine -HOSTNAME=$(hostname) - -mkdir -p /OD8N/data/${CONTAINER_NAME}/n8n -mkdir -p /OD8N/data/${CONTAINER_NAME}/data - -sudo chmod 777 /OD8N/data/${CONTAINER_NAME}/n8n -sudo chmod 777 /OD8N/data/${CONTAINER_NAME}/data - - -# Stop the container if it exists -if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then - echo "$(date '+%Y-%m-%d %H:%M') - stopping existing container $CONTAINER_NAME" - docker stop "$CONTAINER_NAME" - docker rm "$CONTAINER_NAME" -fi - - - -docker run -d \ - --name "$CONTAINER_NAME" \ - -p 5678 \ - --cap-add=SYS_ADMIN \ - --security-opt seccomp=unconfined \ - --restart=always \ - -e N8N_HOST="${CONTAINER_NAME}.od8n.com" \ - -e N8N_PORT=5678 \ - -e N8N_PROTOCOL=https \ - -e NODE_ENV=production \ - -e WEBHOOK_URL="https://${CONTAINER_NAME}.od8n.com/" \ - -e GENERIC_TIMEZONE="UTC-3" \ - -v "/OD8N/data/${CONTAINER_NAME}/n8n:/home/node/.n8n" \ - -v "/OD8N/data/${CONTAINER_NAME}/data:/data" \ - --label "traefik.enable=true" \ - --label "traefik.http.routers.${CONTAINER_NAME}.rule=Host(\`${CONTAINER_NAME}.od8n.com\`)" \ - --label "traefik.http.routers.${CONTAINER_NAME}.entrypoints=web,websecure" \ - --label "traefik.http.routers.${CONTAINER_NAME}.tls=true" \ - --label "traefik.http.routers.${CONTAINER_NAME}.tls.certresolver=production" \ - --label "traefik.http.services.${CONTAINER_NAME}.loadbalancer.server.port=5678" \ - --network docker-compose_4projects \ - n8nio/n8n:latest - - -echo "Done $1" diff --git a/app/etc/certs/dev.crt b/app/etc/certs/dev.crt new file mode 100644 index 0000000..1750a20 --- /dev/null +++ b/app/etc/certs/dev.crt @@ -0,0 +1,30 @@ +-----BEGIN CERTIFICATE----- +MIIFNzCCAx+gAwIBAgIUCIJuU/7oPy1PrksppEPukIs4MfgwDQYJKoZIhvcNAQEL +BQAwEjEQMA4GA1UEAwwHKi5sb2NhbDAeFw0yNTA4MDgyMTMyMzlaFw0yNjA4MDgy +MTMyMzlaMBIxEDAOBgNVBAMMByoubG9jYWwwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQC+uBU5mo8h8LK00Hrw9AtaPI2yXBaVh5S8KrAJ0eoUSxc0gg7q +dwsD9+boyaDbiePcllTLvmIKqX8K2TbiucEaqNGzJauop0+UZjjCQrzuq+cD6xPh ++1bzcWN+oLubUtv4wi3mRNCtP56YyM4c72OweXB9Mhi9Z8e2caTjCLdcCS10i5Oy +NWYZFhnjBxXJoElTt4HZFLDj60Iqi9thVGO4virv7VBwOvAKaCgOOuagPtISgHO7 +1t1hV9TNTHRcE37xpOZT6moPsEBitkszwPx24SgATGrG5J8UbDJ5EdY+kA4wD0mU +hi9pUWaRlKWQjqRRszvsSnbQUPHORHSUFFpycworeNUBCmTs5jm0/+RqI4TLTUX6 +ZbJ6azgGpgbJtMbMlywW1Yuy9ACrSP/jncKekiR+0uQ5s+y2crT+aeuzHsyMtUUn +TI1ExsOE/QWGH7MV298D+jvSSWg4WTf3dzAiFsDxP4JtDZ1NmDwm6Pjmano1Y57g +uU++4RvYN6YKxDnkcWXIZFpUvW+dr7oLZaOcqwCx4KVCFo4e2qqigYgWgz8r05iE +ngj7UZO70n3dZrkL4Iu2tFATHLBy1SYZIu3ewZodOeK54q63bYtVFj7ECAE4Eb7J +6DgjOtN3GH9E2aKMjzFRvWzItRufLWIycPN/tAOh6dOPuX9oZQf71sxe3wIDAQAB +o4GEMIGBMB0GA1UdDgQWBBSGznETTeVc5FVFEGbdVUzR5jfQADAfBgNVHSMEGDAW +gBSGznETTeVc5FVFEGbdVUzR5jfQADAPBgNVHRMBAf8EBTADAQH/MC4GA1UdEQQn +MCWCCWFwcC5sb2NhbIIJYXBpLmxvY2Fsgg10cmFlZmlrLmxvY2FsMA0GCSqGSIb3 +DQEBCwUAA4ICAQCl+LRB+6Rz0EJFbZnhLWvumY2KegS+QkB6YUDycJIuq/2Q9RWB +Z0yV94asZcvHE21/BHhnMk4Qa2PsQn8gQIGCAhj+/2DVt5mGwWVgoes1gtAg6okH +YYKhTljjfpMFqyp/lyzanzF4VdnhzDKpaRLxKwuCf0xe9V03S4/fri/tVjxpjUyc +eaTgfDlzJgQu2rZZz8dG7fltCEhl9gBGbQ3WWaSDYOW49UXqS3LR0eBZ4s/RAG7Z +LiBIKzOFQjLplaODsCOpOguzRfL6O2WXDADbuh7XAQmmhkfsuruPvP/5E1G1hb6K +khsKyiYo4WLpdGJACezN/jmQVcqULz8iLI/jRaoT5g3dwvBkzyolIF+A6a33D3Ph +vQd5ta6BT/EWTBp4T5MSyvd03rkqV0oCHeF+wTQ3iR4b5jrxlVtqCFlsK32NrB9e +ZAboJitgxLgs6ZKXhoxCGjtZdpgYyxqgEOtJazzNitNxB8Xyb3hCc2t7VPpRUfUa +gyddQFd1yZmhPZqhugXI+LL7xO7HHyrz+CwqeWkObJNDRIe6Me4Rxo9H0ZQfjLa1 +fAgxubtAsGr0AwQSg3X/PamEhVdjvCBCtadgHQZQLaP7ilPBcER/xBQ1jbI1LYzF +BTCypCFykXbDxxbOwzhwRLoUHzWS2XAYT7vOHE60AokMKwArz9s3Hu+wUg== +-----END CERTIFICATE----- diff --git a/app/etc/certs/dev.key b/app/etc/certs/dev.key new file mode 100644 index 0000000..44e4adb --- /dev/null +++ b/app/etc/certs/dev.key @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +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 +YV/U3ImFkT12e6nwfgrMRfQCZrRsp9g= +-----END PRIVATE KEY----- diff --git a/app/etc/init.d/4server-api.init.j2 b/app/etc/init.d/4server-api.init.j2 index 50ad3fb..a1ab4a3 100644 --- a/app/etc/init.d/4server-api.init.j2 +++ b/app/etc/init.d/4server-api.init.j2 @@ -8,10 +8,6 @@ command_args="" pidfile="/run/${RC_SVCNAME}.pid" command_background="yes" -if [ -f /etc/od8n ]; then - . /etc/od8n - export $(cut -d= -f1 /etc/od8n) -fi output_log="/4server/data/api.log" error_log="/4server/data/api.log" diff --git a/app/etc/repositories b/app/etc/repositories index a67f386..4da1d4e 100644 --- a/app/etc/repositories +++ b/app/etc/repositories @@ -1,3 +1,3 @@ -http://alpinelinux.c3sl.ufpr.br/v3.22/main -http://alpinelinux.c3sl.ufpr.br/v3.22/community +https://dl-cdn.alpinelinux.org/alpine/v3.22/main +https://dl-cdn.alpinelinux.org/alpine/v3.22/community diff --git a/app/nebula_install b/app/nebula_install new file mode 100755 index 0000000..71dbf27 --- /dev/null +++ b/app/nebula_install @@ -0,0 +1,17 @@ +#!/bin/bash + + +echo "prsync nebula bin" +prsync -h "$hosts_file" -avz ./nebula/nebula /4server/nebula +ass doas mv /4server/nebula /usr/bin/ + +ass doas mkdir -p /etc/nebula +ass doas chmod 777 /etc/nebula + +template templates/nebula.yml /etc/nebula/config.yml ./host_vars + + + +ass doas chmod 700 /etc/nebula + + diff --git a/app/od8n b/app/od8n deleted file mode 100755 index e69de29..0000000 diff --git a/app/templates/4server-api b/app/templates/4server-api index 50ad3fb..56285da 100644 --- a/app/templates/4server-api +++ b/app/templates/4server-api @@ -8,11 +8,6 @@ command_args="" pidfile="/run/${RC_SVCNAME}.pid" command_background="yes" -if [ -f /etc/od8n ]; then - . /etc/od8n - export $(cut -d= -f1 /etc/od8n) -fi - output_log="/4server/data/api.log" error_log="/4server/data/api.log" diff --git a/app/templates/docker-compose.yml b/app/templates/docker-compose.yml index 15d9ad5..ac955ad 100644 --- a/app/templates/docker-compose.yml +++ b/app/templates/docker-compose.yml @@ -20,7 +20,7 @@ services: ports: - 80:80 - 443:443 - #- 8080:8080 + - 8080:8080 volumes: - /run/docker.sock:/run/docker.sock:ro - /4server/config/traefik/etc:/etc/traefik diff --git a/app/update b/app/update index c9c03c0..228d22e 100755 --- a/app/update +++ b/app/update @@ -1,47 +1,58 @@ #!/bin/bash ### SYSTEM SETUP -ass doas mkdir -p /OD8N -ass doas chmod 777 /OD8N -ass mkdir -p /OD8N/data +rex doas mkdir -p /4server +rex doas chmod 777 /4server +rex mkdir -p /4server/data ### PACKAGES -prsync -h "$hosts_file" -avz ./etc/repositories /OD8N/repositories -ass doas mv /OD8N/repositories /etc/apk/ -ass doas apk update -ass doas apk upgrade -ass doas apk add jq rsync mc vim docker docker-compose htop linux-lts sqlite +rex doas apk update +rex doas apk add rsync + + +echo "prsync ./etc/repositories" +prsync -h "$hosts_file" -avz ./etc/repositories /4server/repositories +rex doas mv /4server/repositories /etc/apk/ +rex doas apk update +rex doas apk upgrade +rex doas apk add jq rsync mc vim docker docker-compose htop linux-lts sqlite bash ### own bins -prsync -h "$hosts_file" -avz ./bin/OD8N/sbin/ /OD8N/sbin/ +prsync -h "$hosts_file" -avz ./sbin/ /4server/sbin/ +prsync -h "$hosts_file" -avz ./etc/.bashrc /home/oliver/ + ### API #INSTALL API KEYS -template templates/od8n /OD8N/od8n ./host_vars -ass doas mv /OD8N/od8n /etc/od8n +template templates/4server /4server/4server ./host_vars +rex doas mv /4server/4server /etc/4server #INSTALL API SERVICE -template templates/od8n-api /OD8N/od8n-api ./host_vars/ -ass doas mv /OD8N/od8n-api /etc/init.d/od8n-api -ass doas chmod 0755 /etc/init.d/od8n-api -ass doas chown root:root /etc/init.d/od8n-api -ass doas rc-update add od8n-api default -ass doas rc-service od8n-api restart -ass doas rc-update add od8n-api default +template templates/4server-api /4server/4server-api ./host_vars/ +rex doas mv /4server/4server-api /etc/init.d/4server-api +rex doas chmod 0755 /etc/init.d/4server-api +rex doas chown root:root /etc/init.d/4server-api +rex doas rc-update add 4server-api default +rex doas rc-service 4server-api restart +rex doas rc-update add 4server-api default ### Infrastructure ##### Docker -ass doas rc-service docker start -ass doas rc-update add docker boot +rex doas rc-service docker start +rex doas rc-update add docker boot -ass mkdir /OD8N/config/ -template templates/traefik.yaml /OD8N/config/traefik.yaml ./host_vars +rex mkdir -p /4server/config/ +template templates/traefik.yaml /4server/config/traefik.yaml ./host_vars + +rex mkdir -p /4server/data/traefik/etc/certs +prsync -h "$hosts_file" -avz ./etc/certs/* /4server/data/traefik/etc/certs/ -template templates/docker-compose.yml /OD8N/docker-compose.yml ./host_vars -ass doas docker-compose -f /OD8N/docker-compose.yml up -d + +template templates/docker-compose.yml /4server/docker-compose.yml ./host_vars +rex doas docker-compose -f /4server/docker-compose.yml up -d diff --git a/docker-compose.yaml b/docker-compose.yaml index 1a8e5be..49602b0 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -4,7 +4,6 @@ services: context: ./alpine volumes: - ./app:/app - - ./od8n:/app/od8n tty: true privileged: true diff --git a/start_vm b/start_vm index b393c6a..623cea6 100755 --- a/start_vm +++ b/start_vm @@ -1,6 +1,14 @@ #/bin/bash -cp alpine.qcow2 tmp/alpine.qcow2 +#cp alpine.qcow2 tmp/alpine.qcow2 + +sudo qemu-system-x86_64 \ + -m 1024M \ + -hda tmp/alpine.qcow2 \ + -boot d \ + -netdev user,id=net0,hostfwd=tcp::2222-:22,hostfwd=tcp::80-:80,hostfwd=tcp::443-:443,hostfwd=tcp::8080-:8080 \ + -device e1000,netdev=net0 \ + -enable-kvm \ + -cpu host -qemu-system-x86_64 -m 1024M -hda tmp/alpine.qcow2 -boot d -netdev user,id=net0,hostfwd=tcp::2222-:22 -device e1000,netdev=net0 -enable-kvm -cpu host