English | 한국어
A self-hostable Korean wedding invitation website with a cozy Stardew Valley pixel-art aesthetic. Your guests get an interactive invitation — guestbook, mini-game, photo sharing — and you get an admin panel to manage everything without touching code.
Everything runs from a single Docker container. No cloud accounts, no monthly fees, no external services required.
🌐 Live demo: demo-wedding.runfridge.dev — try it before hosting your own.
⚠️ It's a demo server: it may be down and its data may be reset at any time.
- Invitation — Couple and family introductions, date and venue, and bank transfer info for congratulatory gifts
- Directions — Venue map with Kakao Map, Naver Map, T Map, and Google Maps links, plus subway, bus, parking, and charter bus guidance
- Guestbook — Congratulatory messages guests can edit or delete with their own password, with an option to leave secret messages only you two can read
- Match Card Game — A photo-matching mini-game using your wedding photos, with an arcade-style leaderboard, unlockable achievements, and a Hall of Fame
- Photo Sharing — Guests upload photos from the wedding day with a built-in editor (crop, rotate, filters); uploads open shortly before the ceremony with a live countdown
- Little Delights — Day/night themes, an animated pixel-art scene with wandering farm animals, confetti celebrations, and haptic feedback on mobile
- Simple Page — A plain, easy-to-read invitation at
/simplefor guests who find the interactive site overwhelming — just the essentials in large text. You can also point it at an external invitation card instead
The admin panel at /-/admin/ puts everything in your hands:
- Wedding details — Names, family info, date, venue, greetings, bank accounts, and directions, all edited in the browser — even after sending out the link
- Photo management — Curate the photos for the game and gallery, pick the main photo, and approve or hide guest uploads
- Guestbook moderation — Hide or delete messages, and read the secret ones
- Optional auto-moderation — Let OpenAI's moderation service screen guest photos and messages automatically; you can always override
- Analytics — Daily visitor chart and live server logs
- Leaderboard control — Remove joke entries or reset the game rankings
You need a server (any small VPS or home server works) with Docker installed.
1. Start it
docker run -d --name wedding-server \
-p 8080:8080 \
-v wedding-data:/data \
-e TZ=Asia/Seoul \
--restart unless-stopped \
ghcr.io/runfridge/wedding-card:latestSwap Asia/Seoul for your timezone if the wedding isn't in Korea. Prefer Docker Compose? Download docker-compose.yml from this repository and run docker compose up -d.
2. Get your admin password
A password is generated on first launch and printed in the server logs:
docker logs wedding-serverIt's also saved to /data/admin_password.txt (deleted once you set your own).
3. Set up
Open http://localhost:8080/-/admin/ and log in. A setup wizard walks you through choosing your own password, photo storage (the default keeps photos on your server), and optional content moderation.
4. Make it yours
Fill in your wedding details under Settings, upload your photos, and share the link with your guests. 🎉
Tip: To serve the site on a domain with HTTPS, put a reverse proxy (Caddy, Nginx, Traefik, …) in front of port 8080.
A live demo runs at demo-wedding.runfridge.dev, with its admin panel at demo-wedding.runfridge.dev/-/admin/ — log in with password demo_1234! and look around: post to the guestbook, play the game, approve photos, edit the wedding details. Don't leave anything you'd miss; all demo data resets weekly.
Want to run a demo instance yourself? See Demo Mode in the development guide.
Everything lives in the wedding-data Docker volume: the database and, with the default local storage, all uploaded photos. Backing up that one volume backs up your whole wedding site.
Don't want to approve every guest photo by hand? Enable moderation in Admin → System (or during setup) with an OpenAI API key. Clean photos are approved automatically, inappropriate guestbook messages are hidden automatically, and every decision can be overridden from the admin panel.
Each GitHub Release attaches image tarballs for servers without registry access:
docker load < wedding-server-<version>-amd64.tar.gz # or -arm64The invitation and admin panel are available in Korean and English. The language follows each visitor's browser and can be switched anytime; your own content — greetings, notices, directions — is shown exactly as you wrote it.
Want to build from source, explore the API, add a language, or contribute? See the Development Guide.