Agentero
에이전트를 연결해 로컬 Vault에 연구 컨텍스트를 보관·Zotero에서 무결점 이동·읽고 이해·재활용
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Self-hosted portfolio: your CV and projects on one cheerful page, edited from your browser. 7 themes, light and dark, French and English, 2FA admin. One Docker container, no database.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A CV in a PDF is fine, but it doesn't show what you build. Website builders show it nicely, on someone else's servers, with their branding and their trackers.
Folichon is a single page that tells your story (who you are, what you build, where you've worked, what you know), hosted on your server. You change it from a built-in editor in your browser: no code, no rebuild, no database.
| 🧑💻 A page that looks like you | Introduction with photo, key figures, big project cards with their own colours and screenshots, small projects, experience timeline, skills and contact. |
| ✏️ Built-in editor | Every text, link, colour and image is editable from the browser, with lists you reorder, undo on delete and a guard against overwriting a newer version. |
| 🔐 Secured | Admin at a secret address, password and two-factor authentication, limited attempts, revocable sessions, strict security headers. |
| 🌗 Light and dark | Follows the system, with a switch on the page and in the editor. |
| 🎨 7 themes, your fonts | Folichon, Magazine, Terminal, Retro, Neon, Pop or Plain CV: each changes the layout, not just the colours. Pick a font for headings and body, or upload your own. |
| 📱 Mobile first | Sticky menu, compact layout, the phone's own share sheet. |
| 🔗 Share preview | Links shared on WhatsApp, LinkedIn or Discord show a card drawn like the top of your page: name, photo, headline and key figures. |
| 🌍 French and English | The page and the editor speak both. |
| 🪶 Light | One container, no database, no external resource: fonts are served by the site, images are WebP. |
Alex Martin is an invented profile used for the screenshots. Browse every theme, in light and dark, on the website.
Create a folder with this docker-compose.yml:
services:
folichon:
image: ghcr.io/mrddream/folichon:latest
container_name: folichon
restart: unless-stopped
init: true
ports:
- '3000:3000'
env_file: .env
volumes:
- ./data:/data
Next to it, a .env file only you can read (chmod 600 .env):
# Admin password: 12 characters or more recommended
ADMIN_PASSWORD=
# Secret admin address, for example /admin-7f3k9q2x
ADMIN_PATH=
# Behind a reverse proxy (Nginx Proxy Manager, Traefik, Caddy…):
# TRUST_PROXY=loopback, uniquelocal
# SITE_URL=https://example.com
Create the data folder (the container runs as user 1000) and start:
mkdir -p data && sudo chown 1000:1000 data
docker compose up -d
The site is at http://your-server:3000, the admin at http://your-server:3000/admin-7f3k9q2x. Without ADMIN_PATH, a random address is generated and printed in docker logs folichon.
To build the image yourself: clone the repository, cp .env.example .env, then docker compose up -d --build. In that case, HOST_PORT in .env sets the port on your server (3000 by default).
| Variable | Purpose | Default |
|---|---|---|
ADMIN_PASSWORD | Admin password. Without it (or if too short), the admin is disabled. | — |
ADMIN_PATH | Secret admin address. | random, kept in data/admin-path.txt |
TRUST_PROXY | Behind a reverse proxy: proxies trusted for the visitor IP, for example loopback, uniquelocal or 1. true is refused (IP spoofing). | off |
SITE_URL | Public address of the site, used for share previews (WhatsApp, LinkedIn…) and shown on the preview card. | taken from the request |
UPDATE_CHECK | Checks GitHub (at most every 12 h) whether a newer Folichon version exists, shown next to the version in the admin. false turns it off. | on |
SESSION_SECRET | Session signing key. | random, kept in data/.session-secret |
PORT | Port inside the container. | 3000 |
DATA_DIR | Data folder. | /data in Docker |
data/totp.json.data/totp.json and restart the container. A new QR code is offered.https://… link.I build *Android apps*.data/content.backup.json. If the content changed elsewhere (another tab), saving is refused instead of overwriting it.HttpOnly, SameSite=Strict sessions valid for 12 h; changing the password or the 2FA key signs everyone out, and "Déconnexion" revokes the session on the server.Content-Security-Policy, Permissions-Policy, Cross-Origin-Opener-Policy, X-Content-Type-Options, Strict-Transport-Security (over HTTPS) headers, noindex on the admin.Found a vulnerability? See SECURITY.md.
npm install
ADMIN_PASSWORD=test-password ADMIN_PATH=/admin npm run dev
npm run check # Prettier, ESLint and tests
MIT. The fonts (Inter, Bricolage Grotesque, JetBrains Mono) are under the SIL Open Font License: see public/fonts/ and src/share-card/.