🌛 First commit

This commit is contained in:
2025-12-29 17:55:42 -05:00
parent 87bad9b704
commit b4bce043d9
20 changed files with 852 additions and 0 deletions

View File

@@ -0,0 +1,63 @@
# Productivity Stack
GitLab, Vaultwarden, Memos, Mortis, and FreshRSS.
## Services
| Service | Port | Description |
|---------|------|-------------|
| gitlab | 8929:80, 2222:22 | Git repository |
| vaultwarden | 4743:80 | Password manager |
| memos | 5230:5230 | Note-taking |
| mortis | 5231:5231 | Memos iOS companion |
| freshrss | 8054:80 | RSS reader |
## GitLab
### Initial Setup
GitLab runs migrations on first start - takes 15-20 minutes. Be patient.
### Get Root Password
```bash
docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
```
### NGINX Proxy Manager
Create HTTPS proxy for `git.rishighan.com` pointing to `192.168.1.75:8929`
GitLab recommends SSL, so use HTTPS.
## Vaultwarden
### NGINX Proxy Manager
Create HTTPS proxy for `vault.rishighan.com` pointing to `192.168.1.75:4743`
### Admin Panel
Access at `https://vault.rishighan.com/admin` with the `ADMIN_TOKEN` from stack.env
## Memos + Mortis
Mortis is the iOS companion for Memos. It connects via gRPC to memos:5230.
### NGINX Proxy Manager
Create HTTPS proxy for `memos.rishighan.com` pointing to `192.168.1.75:5230`
## FreshRSS
### NGINX Proxy Manager
Create HTTPS proxy for `rss.rishighan.com` pointing to `192.168.1.75:8054`
### Import Feeds
1. Copy `feeds.opml` to `/mnt/user/appdata/freshrss/`
2. In FreshRSS: Settings → Import/Export → Import OPML
3. Enable `af_readability` extension to bypass paywalls
The OPML contains curated feeds for Gaming, Tech, Politics, Weather, and World News - free from paywalled bullshit.

View File

@@ -0,0 +1,80 @@
services:
gitlab:
image: gitlab/gitlab-ce:latest
container_name: gitlab
restart: unless-stopped
hostname: git.rishighan.com
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://git.rishighan.com'
nginx['listen_port'] = 80
nginx['listen_https'] = false
gitlab_rails['time_zone'] = 'America/Chicago'
ports:
- 8929:80
- 2222:22
volumes:
- /mnt/user/data/gitlab/config:/etc/gitlab
- /mnt/user/data/gitlab/logs:/var/log/gitlab
- /mnt/user/data/gitlab/data:/var/opt/gitlab
shm_size: '256m'
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
ports:
- 4743:80
environment:
- TZ=America/Los_Angeles
- SIGNUPS_ALLOWED=true
- INVITATIONS_ALLOWED=true
- WEBSOCKET_ENABLED=false
- ADMIN_TOKEN=${VAULTWARDEN_ADMIN_TOKEN}
volumes:
- /mnt/user/appdata/vaultwarden:/data
memos:
image: neosmemo/memos:stable
container_name: memos
restart: unless-stopped
ports:
- 5230:5230
environment:
- TZ=UTC
- MEMOS_MODE=prod
- MEMOS_PORT=5230
volumes:
- /mnt/user/appdata/memos:/var/opt/memos
healthcheck:
test: wget --quiet --tries=1 --spider http://localhost:5230 || exit 1
start_period: 1m
start_interval: 10s
interval: 1m
timeout: 5s
retries: 3
mortis:
image: ghcr.io/mudkipme/mortis:0.25.2
container_name: mortis
restart: unless-stopped
ports:
- 5231:5231
command: ["-grpc-addr=memos:5230"]
depends_on:
- memos
freshrss:
image: lscr.io/linuxserver/freshrss:latest
container_name: freshrss
restart: unless-stopped
environment:
- PUID=99
- PGID=100
- UMASK=022
- TZ=America/Los_Angeles
- CRON_MIN=*/30
ports:
- 8054:80
volumes:
- /mnt/user/appdata/freshrss:/config

View File

@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<opml version="2.0">
<head>
<title>Rishi's Feeds</title>
<dateCreated>2024</dateCreated>
</head>
<body>
<outline text="Tech" title="Tech">
<outline type="rss" text="Ars Technica" title="Ars Technica" xmlUrl="http://feeds.arstechnica.com/arstechnica/index" htmlUrl="https://arstechnica.com"/>
<outline type="rss" text="The Register" title="The Register" xmlUrl="https://www.theregister.com/headlines.atom" htmlUrl="https://www.theregister.com"/>
<outline type="rss" text="Bleeping Computer" title="Bleeping Computer" xmlUrl="https://www.bleepingcomputer.com/feed/" htmlUrl="https://www.bleepingcomputer.com"/>
<outline type="rss" text="Tom's Hardware" title="Tom's Hardware" xmlUrl="https://www.tomshardware.com/feeds.xml" htmlUrl="https://www.tomshardware.com"/>
</outline>
<outline text="Gaming" title="Gaming">
<outline type="rss" text="GamingOnLinux" title="GamingOnLinux" xmlUrl="https://www.gamingonlinux.com/article_rss.php" htmlUrl="https://www.gamingonlinux.com"/>
<outline type="rss" text="Rock Paper Shotgun" title="Rock Paper Shotgun" xmlUrl="https://www.rockpapershotgun.com/feed" htmlUrl="https://www.rockpapershotgun.com"/>
<outline type="rss" text="PC Gamer" title="PC Gamer" xmlUrl="https://www.pcgamer.com/rss/" htmlUrl="https://www.pcgamer.com"/>
</outline>
<outline text="Weather" title="Weather">
<outline type="rss" text="Fox Weather" title="Fox Weather" xmlUrl="https://moxie.foxweather.com/google-publisher/latest.xml" htmlUrl="https://www.foxweather.com"/>
<outline type="rss" text="Severe Weather Europe" title="Severe Weather Europe" xmlUrl="https://severe-weather.eu/feed/" htmlUrl="https://severe-weather.eu"/>
</outline>
<outline text="Politics" title="Politics">
<outline type="rss" text="ProPublica" title="ProPublica" xmlUrl="https://www.propublica.org/feeds/propublica/main" htmlUrl="https://www.propublica.org"/>
<outline type="rss" text="The Intercept" title="The Intercept" xmlUrl="https://theintercept.com/feed/?lang=en" htmlUrl="https://theintercept.com"/>
<outline type="rss" text="NPR Politics" title="NPR Politics" xmlUrl="https://feeds.npr.org/1014/rss.xml" htmlUrl="https://www.npr.org/sections/politics"/>
<outline type="rss" text="BBC Politics" title="BBC Politics" xmlUrl="http://feeds.bbci.co.uk/news/politics/rss.xml" htmlUrl="https://www.bbc.com/news/politics"/>
<outline type="rss" text="The Guardian Politics" title="The Guardian Politics" xmlUrl="https://www.theguardian.com/politics/rss" htmlUrl="https://www.theguardian.com/politics"/>
</outline>
</body>
</opml>

View File

@@ -0,0 +1 @@
VAULTWARDEN_ADMIN_TOKEN=emNPS8DJtzKaLDG3i+braZik2xuPYWHIZeyfoI6dRmP++0JyE7NtC3L5dv0w2yM4