RAM
Two modules on this site publish real minimums, and both are larger than people expect. Everything else is small enough that the answer is usually "it fits".
Where a project states a figure, it is quoted here. Where it does not, the band is an estimate from typical idle use, not an upstream number, and it is labelled as such.
| Module | RAM | Source |
|---|---|---|
| Huly | 8GB minimum, 16GB recommended | Upstream |
| AppFlowy | 4GB minimum, 8GB recommended | Upstream |
| Jitsi Meet | Grows with participants, not with idle time | Depends on calls |
| Docspell with Solr | Hundreds of MB, mostly Solr | Estimate |
| Paperless-ngx during OCR | Hundreds of MB, spiky | Estimate |
| Homarr, Dashy, BookStack, Wiki.js | Modest, a few hundred MB each | Estimate |
| PairDrop, PsiTransfer, Kiwix, BentoPDF | Small | Estimate |
The practical answer for most people: 8GB runs a comfortable stack without the two large workspaces. 16GB runs anything on this site. 4GB runs a wiki, a forge, a dashboard and file transfer, which is a genuinely useful server.
Disk
Disk is where a workspace server surprises you, and it is almost always one of three things.
- Paperless-ngx
- Keeps the original and a processed archive version of each document, so budget roughly double what you are scanning
- Kiwix
- ZIM files are the whole cost. A full Wikipedia with images is very large; the no-pictures build is far smaller. Check current sizes on the Kiwix download site before committing
- Forgejo or Gogs
- Repository history, which grows quietly, plus package registry storage if you use it
Everything else is small by comparison. Wikis, dashboards and PDF tools store text, configuration and thumbnails.
Watch growth rather than guessing at it. A monthly look at
du -sh across your bind-mount directories will tell you which
module is actually growing, which is rarely the one you expected.
CPU and OCR
Almost nothing here is CPU-bound. The exceptions are OCR and video.
OCR is the one that will make a slow machine feel slow. Paperless-ngx and Docspell both run it on every incoming document, and it scales with page count. On a mini PC this is unnoticeable. On a Raspberry Pi it turns a bulk import of several hundred documents into an overnight job. If you are migrating an existing archive, start it before bed rather than before a meeting.
Video in Jitsi is different: the videobridge forwards streams rather than transcoding them, so CPU load tracks the number of participants in a call rather than sitting constant. An idle Jitsi install costs you almost nothing. A ten-person call costs you real bandwidth, more than it costs you CPU.
Everything else in this list spends most of its life waiting for a request that never comes. Do not buy a current-generation processor to run a wiki.
Backups
Three categories, and they need different treatment.
- Bind-mount directories. Copy them. If your compose file and these folders are backed up, you can rebuild the stack on a new machine.
- Databases. Do not copy the files while the database is
running. Take a dump:
docker compose exec db pg_dump -U user dbname > dump.sqlfor PostgreSQL, the mysqldump or mongodump equivalent otherwise. A file-level copy of a live database restores as a corrupt database, and you usually find out at the worst moment. - Application-level exports. Several apps have their own export that survives a version change better than a raw backup does. Paperless has a document export, Wekan exports boards as JSON with attachments, BookStack and Wiki.js both export content. Run one occasionally even if you have file backups.
Example builds
Three stacks that make sense together, sized honestly.
The small one. 4GB, any machine that stays on.
BookStack, Forgejo, PairDrop, Dashy. A wiki, your code, a way to move files around the house, and one page that links it all. Runs comfortably on a Raspberry Pi 5 or an older NAS. No OCR, so nothing is CPU-bound.
The usual one. 8GB, a second-hand mini PC.
Everything above plus Paperless-ngx with Redis and PostgreSQL, Stirling-PDF, PsiTransfer and Homarr. This is the stack most people who read this site end up with. OCR is fast enough that scanning becomes a habit rather than a chore.
The large one. 16GB and a real domain.
Everything above plus CryptPad on its two domains, Jitsi Meet with UDP open, and either AppFlowy or Huly deployed from its own repository. At this point you are running infrastructure rather than a few containers, and the backup section stops being optional.
Notice what is missing from all three: you do not need two wikis, two forges or three PDF tools. Pick one per job and add the second only when you have a reason. Docs has the comparison for each pair.