From 26d5a8b7be52a060c47e4efe4977c6cdd3d306c2 Mon Sep 17 00:00:00 2001 From: georgew Date: Sun, 25 Jan 2026 17:55:33 +0000 Subject: [PATCH] docs: add all untracked content --- cheat-sheet.md | 45 +++++++++++++++++++++++++++++++++++++++++++++ google-drive.md | 38 ++++++++++++++++++++++++++++++++++++++ home.md | 41 +++++++++++++++++++++++++++++++++++++++++ inventory.md | 30 ++++++++++++++++++++++++++++++ server-overview.md | 41 +++++++++++++++++++++++++++++++++++++++++ 5 files changed, 195 insertions(+) create mode 100644 cheat-sheet.md create mode 100644 google-drive.md create mode 100644 home.md create mode 100644 inventory.md create mode 100644 server-overview.md diff --git a/cheat-sheet.md b/cheat-sheet.md new file mode 100644 index 0000000..7bf6958 --- /dev/null +++ b/cheat-sheet.md @@ -0,0 +1,45 @@ +--- +title: Maintenance Cheat Sheet +description: Simple commands for general management of the server +published: 1 +date: 2026-01-22T18:02:12.325Z +tags: +editor: markdown +dateCreated: 2026-01-22T18:02:09.446Z +--- + +# 🛠️ Maintenance & CLI Cheat Sheet + +Common commands for managing Docker, Caddy, and developing apps. + +## 🐳 Docker Management +* **List running containers:** +```bas +docker ps +``` +* **Restart all apps:** +```bash +cd ~/directory && docker compose up -d +``` +* **Clean up unused images:** +```bash +docker system prune -a +``` + +### Caddy Specific +* **Check Config Syntax:** +```bash +docker exec -w /etc/caddy caddy-proxy caddy validate +``` +* **Apply Changes (reload):** +```bash +docker exec -w /etc/caddy caddy-proxy caddy reload +``` + +# 🏗️ Development Reminders + +Node.js Build Command: Use `Buildx` to ensure compatibility with linux/amd64 architecture. +```bash +docker buildx build --platform linux/amd64 -t your-image-name . +``` + diff --git a/google-drive.md b/google-drive.md new file mode 100644 index 0000000..6053ae5 --- /dev/null +++ b/google-drive.md @@ -0,0 +1,38 @@ +--- +title: 🛠️ Rclone & Google Drive Setup +description: Description for setup of Rclone and Google Drive on the server +published: 1 +date: 2026-01-23T17:53:17.857Z +tags: +editor: markdown +dateCreated: 2026-01-23T17:53:15.017Z +--- + +# 🛠️ Rclone Cloud Integration + +This server uses **Rclone** to mount a specific subdirectory of Google Drive. + +## 🔑 Connection Credentials +* **Google Cloud Project:** `georgew` +* **API Enabled:** Google Drive API +* **Auth Type:** OAuth2 (Client ID & Secret) +* **Remote Name:** `gdrive` + +## 📁 Mount Specifics +To maximize security, the mount is restricted to a single folder. If I want to change in future I should re-initialise the mount. This would also need to update the systemd service (below) and also to update the audiobookshelf admin library setting (point to the new folder for audiobooks): +* **Source (Google Drive):** `gdrive:audiobooks` +* **Destination (Server):** `~/google-drive` +* **Access Level:** "Least Privilege" (The server cannot see any other Google Drive data). + +## ⚙️ System Management +The mount is managed by a **systemd service** to ensure it restarts automatically. + +* **Service File:** `/etc/systemd/system/rclone-gdrive.service` +* **Common Commands:** + * Check Status: `sudo systemctl status rclone-gdrive` + * Restart Mount: `sudo systemctl restart rclone-gdrive` + * Force Unmount: `fusermount -uz ~/google-drive` + +## 🚀 Moving Books +To move a book from the local SSD to the Cloud Archive: +`mv ~/audiobookshelf/audiobooks/AuthorName ~/google-drive/` \ No newline at end of file diff --git a/home.md b/home.md new file mode 100644 index 0000000..2ff6635 --- /dev/null +++ b/home.md @@ -0,0 +1,41 @@ +--- +title: Home +description: Useful links +published: 1 +date: 2026-01-23T17:54:22.790Z +tags: +editor: markdown +dateCreated: 2026-01-22T18:07:18.049Z +--- + +# 🚀 George's Server Documentation + +Welcome to the internal knowledge base for **personal-server-1**. This wiki contains everything needed to manage, maintain, and scale the current server infrastructure. + +--- + +## 📂 Quick Navigation + +### 🛡️ [Server Overview & Access](/server-overview) +*IP addresses, SSH credentials, Hetzner firewall settings, and security policies.* + +### 🛠️ [Maintenance Cheat Sheet](/cheat-sheet) +*Essential Docker commands, Caddy reload instructions, and Node.js build reminders.* + +### 📦 [Application Inventory](/inventory) +*A full list of running containers, their internal paths, and public URLs.* + +### 📦 [Rclone and Google Drive (Audiobooks](/google-drive) +*Description for the setup of rclone, and audiobook library.* + + +--- + +## 🔗 External Dashboards +* **[Uptime Kuma (Status)](https://status.georgew.dev)** - Real-time monitoring and alert settings. +* **[Dozzle (Logs)](https://logs.georgew.dev)** - Live container log viewer. +* **[Hetzner Console](https://console.hetzner.cloud)** - Infrastructure management and billing. + +--- + +> **Note:** Access to this wiki is restricted to authorized users. All server changes should be documented here immediately to maintain a "Single Source of Truth." \ No newline at end of file diff --git a/inventory.md b/inventory.md new file mode 100644 index 0000000..cc29068 --- /dev/null +++ b/inventory.md @@ -0,0 +1,30 @@ +--- +title: Inventory +description: List of services +published: 1 +date: 2026-01-23T18:38:08.683Z +tags: +editor: markdown +dateCreated: 2026-01-22T18:04:19.256Z +--- + +# 📦 Application Inventory + +Current status and internal paths for all services running on this server. + +| Application | Internal Path | Public URL | Purpose | +| :--- | :--- | :--- | :--- | +| **Portfolio** | `~/portfolio` | `georgew.dev` | Public resume/site. | +| **Survey App** | `~/survey` | `datasaur.dev` | Internal tools. | +| **Caddy** | `~/caddy` | N/A | SSL & Routing. | +| **Dozzle** | `~/dozzle` | `logs.georgew.dev` | Real-time logs (Secured). | +| **Uptime Kuma**| `~/uptime-kuma`| `status.georgew.dev`| Monitoring & Alerts. | +| **Wiki.js** | `~/wiki` | `wiki.georgew.dev` | This documentation!. | +| **Audiobookshelf** | `~/audiobookshelf` | `http://100.66.70.69:13378` | Audiobook & Podcast Server. | +| **Rclone Mount** | `~/google-drive` | N/A | Google Drive Cloud Storage Bridge. | + +--- + +## 🔔 Notifications +* **Service Alerts:** Managed via Uptime Kuma. +* **Channel:** Telegram Bot (`@georgew_server_bot`). \ No newline at end of file diff --git a/server-overview.md b/server-overview.md new file mode 100644 index 0000000..725eccf --- /dev/null +++ b/server-overview.md @@ -0,0 +1,41 @@ +--- +title: Server Overview +description: Details of the server +published: 1 +date: 2026-01-23T17:45:34.480Z +tags: +editor: markdown +dateCreated: 2026-01-22T17:55:26.650Z +--- + +# 🖥️ Server Overview & Access + +This page contains the core connection details for the George's Personal Server hosted on Hetzner Cloud. + +## 📍 Connection Details +* **Hetzner IP:** `188.34.204.15` +* **Location:** Nuremberg, Germany (hel1) +* **SSH User:** `george` +* **SSH Command:** `ssh george@188.34.204.15` + +--- + +## 🔒 Security Configuration +* **Firewall (UFW):** Active. + * Allowed Ports: `22` (SSH), `80` (HTTP), `443` (HTTPS). +* **Fail2Ban:** Active. Protects against brute-force SSH attempts. +* **Snapshot Policy:** Manual snapshots should be taken in the Hetzner Console before major changes. + +--- + +## 🌐 Domain Management +* **Registrar:** Namecheap. +* **DNS Strategy:** Individual A Records for subdomains. + +## 💾 Storage Architecture +The server uses a **Hybrid Storage** model to balance performance and cost: +* **Local SSD (Hot):** 28GB available on `/`. Stores app configs and "Current Listen" audiobooks. +* **Cloud Storage (Cold):** 2TB Google One via Rclone. + * **Mount Point:** `~/google-drive` + * **Logic:** Uses a 10GB local VFS cache to ensure smooth streaming without high latency. +