January 18Jan 18 OverviewEvery side of you. Your way. Facet is a self-hosted personal profile platform. Think LinkedIn meets personal portfolio, except you hold all the cards. Create one profile, then spin up multiple views of it: send recruiters one version, conference organizers another, clients a third. No duplicating content. No platform scraping your data. No tracking. Just you, your server, your rules.Your data lives in a single SQLite database on your box. One container, one port, one volume to back up.What Makes Facet Different?Most portfolio tools force you into one story. But if you're an engineer who also speaks at conferences, or a product person who also writes, or anyone who doesn't fit a single job title, Facet is built for you. One profile, many faces, each one tailored to who's looking.FeaturesOne profile, multiple views: Tailor exactly what each audience sees, down to the section and item level. Override your headline, swap accent colors, set a custom call-to-action per view.Four privacy levels: Public, unlisted (share-link only), password-protected, or private. Apply per-view and per-item.Share links with superpowers: Generate links that expire, cap total uses, and revoke instantly. Clean URLs, no ugly tokens, HMAC-hashed so nothing leaks.Resume import and export: Upload a PDF/DOCX and AI auto-extracts your experience, skills, education, and more. Or generate a polished resume (PDF/DOCX) out of your profile.GitHub import: Pull in your repos as projects, with optional AI summaries and tag suggestions.AI writing assistant: 5 rewrite tones plus a critique mode, built into every text field. Bring your own key (OpenAI, Anthropic, or local Ollama). No managed credits, no quotas, keys encrypted at rest.Testimonials: Collect social proof via shareable request links, with an approval workflow and optional email verification.Comments & newsletter: Threaded, moderated comments per item, plus built-in newsletter lists with a compose UI. All in your database, no third parties.Public REST API & webhooks: Scoped API keys (/api/v1/*) and HMAC-signed, SSRF-protected webhooks for automations.Media-rich content: Images, video, full Markdown, and embeds from YouTube, Vimeo, Loom, SoundCloud, Spotify, CodePen, Figma, and more.Feeds & exports: RSS for posts, iCal for talks, full JSON/YAML export for backups.Security built in: AES-256-GCM encryption, bcrypt passwords, optional TOTP 2FA, deny-by-default access control, DOMPurify XSS protection.Zero tracking: No analytics by default (opt-in only), no ads, no engagement metrics. Self-hosted means your data stays yours.Multi-language UI: Ships in English, German, plus Elvish, Klingon, and LOLcat for fun.Quick Start (Unraid)Install via Community Applications: open Apps, search for "Facet", and add the container.First login:Email: [email protected] (override via the template's ADMIN_EMAILS field)Password: changeme123You'll be prompted to change the password immediately on first login. Point a reverse proxy at the single exposed port and you're live. Back up the one /data volume and you've backed up everything: database, encryption key, and uploads.Don't want to self-host? A managed version is available at get-facet.com. Same software, hosted for you, with billing, custom domains, and managed AI credits handled.LinksGitHub: https://github.com/jesposito/FacetDocker Image: ghcr.io/jesposito/facet:latestDocumentation: https://github.com/jesposito/Facet#readmeSelf-Hosting Guide: https://github.com/jesposito/Facet/blob/main/docs/SELF-HOSTING-GUIDE.mdDiscord: https://discord.gg/XD8eUudnmfSupportBugs & Features: GitHub IssuesCommunity: DiscordUnraid Questions: Happy to help right here in this thread! Edited June 23Jun 23 by Zabbie82
January 22Jan 22 Hi,I’m trying to run Facet on Unraid (Docker) and I’m consistently running into a startup crash related to port usage.SetupUnraid 7.2.0Docker image: ghcr.io/jesper/facet:latestNetwork mode: bridgePort mapping: Host 8542 → Container 8080Reverse proxy (Cloudflare Tunnel), but the issue also happens locallyProblemOn startup, Facet crashes with:Error: listen EADDRINUSE: address already in use 0.0.0.0:8080This error comes from Node/SvelteKit, not Caddy.From the logs:Caddy starts normally and binds to port 8080PocketBase starts normally on port 8090The frontend (Node/SvelteKit) crashes immediatelyAfter that, Caddy returns 502 errors because the frontend never comes up.What seems to be happeningUnraid requires an “Internal Port” to be defined in the container template. That automatically injects:PORT=8080into the container environment.Because of this:Node/SvelteKit tries to listen on port 8080Caddy is already listening on port 8080This causes an immediate port conflict (EADDRINUSE)From what I understand, Facet expects:Caddy on 8080Frontend on 3000PocketBase on 8090But the forced PORT=8080 breaks that separation. Unraid doesn’t allow removing this variable, so it’s hard to avoid.QuestionsIs the frontend meant to respect the PORT environment variable?Is there a way to force the frontend to always bind to 3000 regardless of PORT?Is there a recommended workaround for Unraid users, where PORT cannot be removed?Would it make sense for Facet to ignore or unset PORT internally to avoid this conflict?At the moment I can’t get Facet to run on Unraid without modifying internals.Happy to provide more logs or test a fix if needed.Thanks!
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.