mylloon.fr/Documentation.md
Mylloon c79041e7c8
All checks were successful
ci/woodpecker/push/publish Pipeline was successful
docs: typo
2023-10-22 00:03:42 +02:00

4.2 KiB

Documentation

Here is a running example of a fully configured website.


Installation

Use Docker Compose

version: "3.9"

services:
  ewp:
    image: git.mylloon.fr/anri/mylloon.fr:latest
    container_name: EWP
    volumes:
      - /here/your/path/config:/app/config
      - /here/your/path/data:/app/data
    ports:
      - 80:8080
    restart: unless-stopped
Do you want to make the site available on Tor as well?
version: "3.9"

services:
  tor:
    image: goldy/tor-hidden-service:latest
    container_name: Website_tor
    network_mode: bridge
    links:
      - ewp
    environment:
      EWP_TOR_SERVICE_HOSTS: "80:ewp:8080"
      EWP_TOR_SERVICE_VERSION: "3"
    volumes:
      - tor-keys:/var/lib/tor/hidden_service/
    secrets:
      - source: ewp
        target: ewp
        mode: 0400
    restart: unless-stopped

  ewp:
    image: git.mylloon.fr/anri/mylloon.fr:latest
    container_name: Website
    network_mode: bridge
    hostname: ewp
    volumes:
      - /here/your/path/ewp/app/config:/app/config
      - /here/your/path/ewp/app/data:/app/data
    ports:
      - 99:8080
    restart: unless-stopped

volumes:
  tor-keys:
    driver: local

# Use https://github.com/cathugger/mkp224o to generate a key
secrets:
  ewp:
    file: /here/your/path/ewp/hidden_service/hs_ed25519_secret_key

You can tell the Tor Browser that you are offering a onion link by specifying your address in the config.toml file.

onion = "http://youraddress.onion/"

Configuration

Global configuration

This file is stored at /app/config/config.toml

mail = "your.mail at host.com"
lang = "lang"
onion = "http://youraddress.onion/"
app_name = "Nickname"
name = "Firstname"
fullname = "Fullname"

This file is stored at /app/data/contacts/links.toml

"a"   = "redirectiona.fr"
"a/e" = "redirectiona.fr/something"
"a/b" = "redirectiona.fr/amazing"
"b"   = "other_site.com"

This is designed by a tuple (service * optional-scope), separated by /service/optional_scope

  • Links will be available at /contact/service/scope and /c/service/scope
  • The scope is optional
  • You can't stack up scope, only one scope is allowed

This is by design to keep things easy

Add content

Markdown files have YAML headers with --- separator:

---
option: value
---

Markdown file

Blog

Markdown files are stored in /app/data/blog/

---
title: Option<String>
date: Option<Date>
description: Option<String>
publish: Option<bool>
tags: Option<Vec<Tag>>
---

Post content
  • If no title, the filename will be used
  • date format is day-month-year
  • publish is default to false. When false, posts are hidden from index but accessible, see #30

Projects

Markdown files are stored in /app/data/projects/

---
title: Option<String>
link: Option<String>
description: Option<String>
language: Option<String>
---

Project description
  • If no link : the div won't be clickable and will be reported as is to the user (no corner-arrow)
  • Note that only a handful of languages are supported.

Contacts

Markdown files are stored in /app/data/contacts/

---
title: String
custom: Option<bool>
user: Option<String>
link: Option<String>
newtab: Option<bool>
description: Option<String>
---

Custom project description
  • custom is default to false, if true all other metadata are ignored, except the title, and the markdown will be used instead
  • When custom is false then markdown will be ignored and only metadata will be used to create the contact field
  • newtab add property to open in a new tab a link
  • user is the username used in the platform
  • description will be rendered as HTML "title" (text will appear when cursor is hover the link)