🌛 First commit
This commit is contained in:
63
stacks/productivity/README.md
Normal file
63
stacks/productivity/README.md
Normal 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.
|
||||
80
stacks/productivity/docker-compose.yml
Normal file
80
stacks/productivity/docker-compose.yml
Normal 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
|
||||
31
stacks/productivity/feeds.opml
Normal file
31
stacks/productivity/feeds.opml
Normal 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>
|
||||
1
stacks/productivity/stack.env
Normal file
1
stacks/productivity/stack.env
Normal file
@@ -0,0 +1 @@
|
||||
VAULTWARDEN_ADMIN_TOKEN=emNPS8DJtzKaLDG3i+braZik2xuPYWHIZeyfoI6dRmP++0JyE7NtC3L5dv0w2yM4
|
||||
Reference in New Issue
Block a user