From d2a185c01385ef53c712c8d315c69d5deb044e2f Mon Sep 17 00:00:00 2001 From: floatingghost Date: Fri, 15 Jul 2022 12:27:16 +0000 Subject: [PATCH] Documentation updates for stable release (#73) Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma/pulls/73 --- .gitignore | 3 + .woodpecker/.docs.yml | 27 ++ .woodpecker/.lint.yml | 10 - .woodpecker/.release.yml | 15 +- .woodpecker/.test.yml | 19 +- CHANGELOG.md | 2 + Makefile | 7 + README.md | 26 +- config/config.exs | 13 +- docs/Makefile | 7 + docs/Pipfile | 10 + docs/Pipfile.lock | 277 ++++++++++++++++++ docs/README.md | 34 +++ .../administration/CLI_tasks/config.md | 2 +- .../administration/CLI_tasks/database.md | 2 +- .../administration/CLI_tasks/digest.md | 2 +- .../administration/CLI_tasks/email.md | 2 +- .../administration/CLI_tasks/emoji.md | 2 +- .../administration/CLI_tasks/frontend.md | 0 .../CLI_tasks/general_cli_task_info.include | 0 .../administration/CLI_tasks/instance.md | 2 +- .../administration/CLI_tasks/oauth_app.md | 2 +- .../administration/CLI_tasks/relay.md | 2 +- .../administration/CLI_tasks/robots_txt.md | 2 +- .../administration/CLI_tasks/uploads.md | 2 +- .../administration/CLI_tasks/user.md | 2 +- docs/{ => docs}/administration/backup.md | 0 docs/{ => docs}/administration/updating.md | 2 +- docs/{ => docs}/clients.md | 0 docs/{ => docs}/configuration/auth.md | 0 docs/{ => docs}/configuration/cheatsheet.md | 4 +- docs/{ => docs}/configuration/custom_emoji.md | 0 .../configuration/frontend_management.md | 6 +- docs/{ => docs}/configuration/hardening.md | 0 .../configuration/howto_database_config.md | 0 .../configuration/howto_ejabberd.md | 0 .../configuration/howto_mediaproxy.md | 0 .../configuration/howto_mongooseim.md | 0 docs/{ => docs}/configuration/howto_proxy.md | 0 .../configuration/howto_search_cjk.md | 0 ..._set_richmedia_cache_ttl_based_on_image.md | 0 .../howto_theming_your_instance.md | 2 +- docs/{ => docs}/configuration/i2p.md | 0 docs/{ => docs}/configuration/mrf.md | 0 .../configuration/onion_federation.md | 0 .../configuration/optimizing_beam.md | 0 docs/{ => docs}/configuration/postgresql.md | 0 docs/{ => docs}/configuration/search.md | 2 +- docs/{ => docs}/configuration/static_dir.md | 0 .../configuration/storing_remote_media.md | 0 docs/docs/css/extra.css | 28 ++ docs/{ => docs}/development/API/admin_api.md | 0 docs/{ => docs}/development/API/chats.md | 0 .../API/differences_in_mastoapi_responses.md | 0 docs/{ => docs}/development/API/nodeinfo.md | 0 .../{ => docs}/development/API/pleroma_api.md | 0 docs/{ => docs}/development/API/prometheus.md | 0 docs/{ => docs}/development/ap_extensions.md | 0 .../authentication_authorization.md | 0 docs/{ => docs}/development/index.md | 0 .../development/setting_up_akkoma_dev.md | 0 docs/docs/fonts/Tiresias_Infofont.ttf | Bin 0 -> 42084 bytes docs/docs/fonts/Tiresias_PCfont.ttf | Bin 0 -> 72602 bytes docs/docs/images/akko_badday.png | Bin 0 -> 15791 bytes docs/{ => docs}/index.md | 2 +- .../installation/alpine_linux_en.md | 8 +- docs/{ => docs}/installation/arch_linux_en.md | 6 +- .../installation/debian_based_en.md | 8 +- .../installation/debian_based_jp.md | 2 +- docs/{ => docs}/installation/freebsd_en.md | 4 +- .../installation/further_reading.include | 0 .../installation/generic_dependencies.include | 0 docs/{ => docs}/installation/gentoo_en.md | 8 +- .../migrating_from_source_otp_en.md | 4 +- .../installation/migrating_to_akkoma.md | 0 docs/{ => docs}/installation/netbsd_en.md | 6 +- docs/{ => docs}/installation/openbsd_en.md | 6 +- docs/{ => docs}/installation/openbsd_fi.md | 0 .../optional/media_graphics_packages.md | 0 docs/{ => docs}/installation/otp_en.md | 8 +- .../installation/otp_vs_from_source.include | 0 .../otp_vs_from_source_source.include | 2 +- docs/{ => docs}/support.include | 0 docs/mkdocs.yml | 37 +++ docs/requirements.txt | 22 ++ docs/theme/partials/source.html | 64 ++++ installation/apache/akkoma-apache.conf | 2 +- lib/mix/tasks/pleroma/app.ex | 2 +- lib/mix/tasks/pleroma/config.ex | 2 +- lib/mix/tasks/pleroma/database.ex | 2 +- lib/mix/tasks/pleroma/digest.ex | 2 +- lib/mix/tasks/pleroma/email.ex | 2 +- lib/mix/tasks/pleroma/emoji.ex | 2 +- lib/mix/tasks/pleroma/frontend.ex | 2 +- lib/mix/tasks/pleroma/instance.ex | 2 +- lib/mix/tasks/pleroma/relay.ex | 2 +- lib/mix/tasks/pleroma/uploads.ex | 2 +- lib/mix/tasks/pleroma/user.ex | 2 +- lib/pleroma/docs/json.ex | 2 +- lib/pleroma/docs/markdown.ex | 2 +- .../READ_THIS_BEFORE_TOUCHING_FILES_HERE | 2 +- priv/static/index.html | 2 +- 102 files changed, 630 insertions(+), 105 deletions(-) create mode 100644 .woodpecker/.docs.yml delete mode 100644 .woodpecker/.lint.yml create mode 100644 Makefile create mode 100644 docs/Makefile create mode 100644 docs/Pipfile create mode 100644 docs/Pipfile.lock create mode 100644 docs/README.md rename docs/{ => docs}/administration/CLI_tasks/config.md (97%) rename docs/{ => docs}/administration/CLI_tasks/database.md (98%) rename docs/{ => docs}/administration/CLI_tasks/digest.md (87%) rename docs/{ => docs}/administration/CLI_tasks/email.md (90%) rename docs/{ => docs}/administration/CLI_tasks/emoji.md (96%) rename docs/{ => docs}/administration/CLI_tasks/frontend.md (100%) rename docs/{ => docs}/administration/CLI_tasks/general_cli_task_info.include (100%) rename docs/{ => docs}/administration/CLI_tasks/instance.md (96%) rename docs/{ => docs}/administration/CLI_tasks/oauth_app.md (82%) rename docs/{ => docs}/administration/CLI_tasks/relay.md (88%) rename docs/{ => docs}/administration/CLI_tasks/robots_txt.md (89%) rename docs/{ => docs}/administration/CLI_tasks/uploads.md (87%) rename docs/{ => docs}/administration/CLI_tasks/user.md (98%) rename docs/{ => docs}/administration/backup.md (100%) rename docs/{ => docs}/administration/updating.md (94%) rename docs/{ => docs}/clients.md (100%) rename docs/{ => docs}/configuration/auth.md (100%) rename docs/{ => docs}/configuration/cheatsheet.md (99%) rename docs/{ => docs}/configuration/custom_emoji.md (100%) rename docs/{ => docs}/configuration/frontend_management.md (96%) rename docs/{ => docs}/configuration/hardening.md (100%) rename docs/{ => docs}/configuration/howto_database_config.md (100%) rename docs/{ => docs}/configuration/howto_ejabberd.md (100%) rename docs/{ => docs}/configuration/howto_mediaproxy.md (100%) rename docs/{ => docs}/configuration/howto_mongooseim.md (100%) rename docs/{ => docs}/configuration/howto_proxy.md (100%) rename docs/{ => docs}/configuration/howto_search_cjk.md (100%) rename docs/{ => docs}/configuration/howto_set_richmedia_cache_ttl_based_on_image.md (100%) rename docs/{ => docs}/configuration/howto_theming_your_instance.md (98%) rename docs/{ => docs}/configuration/i2p.md (100%) rename docs/{ => docs}/configuration/mrf.md (100%) rename docs/{ => docs}/configuration/onion_federation.md (100%) rename docs/{ => docs}/configuration/optimizing_beam.md (100%) rename docs/{ => docs}/configuration/postgresql.md (100%) rename docs/{ => docs}/configuration/search.md (99%) rename docs/{ => docs}/configuration/static_dir.md (100%) rename docs/{ => docs}/configuration/storing_remote_media.md (100%) create mode 100644 docs/docs/css/extra.css rename docs/{ => docs}/development/API/admin_api.md (100%) rename docs/{ => docs}/development/API/chats.md (100%) rename docs/{ => docs}/development/API/differences_in_mastoapi_responses.md (100%) rename docs/{ => docs}/development/API/nodeinfo.md (100%) rename docs/{ => docs}/development/API/pleroma_api.md (100%) rename docs/{ => docs}/development/API/prometheus.md (100%) rename docs/{ => docs}/development/ap_extensions.md (100%) rename docs/{ => docs}/development/authentication_authorization.md (100%) rename docs/{ => docs}/development/index.md (100%) rename docs/{ => docs}/development/setting_up_akkoma_dev.md (100%) create mode 100755 docs/docs/fonts/Tiresias_Infofont.ttf create mode 100755 docs/docs/fonts/Tiresias_PCfont.ttf create mode 100644 docs/docs/images/akko_badday.png rename docs/{ => docs}/index.md (97%) rename docs/{ => docs}/installation/alpine_linux_en.md (96%) rename docs/{ => docs}/installation/arch_linux_en.md (97%) rename docs/{ => docs}/installation/debian_based_en.md (96%) rename docs/{ => docs}/installation/debian_based_jp.md (99%) rename docs/{ => docs}/installation/freebsd_en.md (98%) rename docs/{ => docs}/installation/further_reading.include (100%) rename docs/{ => docs}/installation/generic_dependencies.include (100%) rename docs/{ => docs}/installation/gentoo_en.md (98%) rename docs/{ => docs}/installation/migrating_from_source_otp_en.md (98%) rename docs/{ => docs}/installation/migrating_to_akkoma.md (100%) rename docs/{ => docs}/installation/netbsd_en.md (97%) rename docs/{ => docs}/installation/openbsd_en.md (98%) rename docs/{ => docs}/installation/openbsd_fi.md (100%) rename docs/{ => docs}/installation/optional/media_graphics_packages.md (100%) rename docs/{ => docs}/installation/otp_en.md (98%) rename docs/{ => docs}/installation/otp_vs_from_source.include (100%) rename docs/{ => docs}/installation/otp_vs_from_source_source.include (69%) rename docs/{ => docs}/support.include (100%) create mode 100644 docs/mkdocs.yml create mode 100644 docs/requirements.txt create mode 100644 docs/theme/partials/source.html diff --git a/.gitignore b/.gitignore index 8fca0b41aa..738e7de3e2 100644 --- a/.gitignore +++ b/.gitignore @@ -61,3 +61,6 @@ pleroma.iml # Editor temp files /*~ /*# + +# Generated documentation +docs/site diff --git a/.woodpecker/.docs.yml b/.woodpecker/.docs.yml new file mode 100644 index 0000000000..61b369e51f --- /dev/null +++ b/.woodpecker/.docs.yml @@ -0,0 +1,27 @@ +pipeline: + build: + when: + event: + - push + branch: + - develop + - stable + secrets: + - SCW_ACCESS_KEY + - SCW_SECRET_KEY + - SCW_DEFAULT_ORGANIZATION_ID + environment: + CI: "true" + image: python:3.10-slim + commands: + - apt-get update && apt-get install -y rclone wget git zip + - wget https://github.com/scaleway/scaleway-cli/releases/download/v2.5.1/scaleway-cli_2.5.1_linux_amd64 + - mv scaleway-cli_2.5.1_linux_amd64 scaleway-cli + - chmod +x scaleway-cli + - ./scaleway-cli object config install type=rclone + - cd docs + - pip install -r requirements.txt + - mkdocs build + - zip -r docs.zip site/* + - cd site + - rclone copy . scaleway:akkoma-docs/$CI_COMMIT_BRANCH/ diff --git a/.woodpecker/.lint.yml b/.woodpecker/.lint.yml deleted file mode 100644 index 0bac90d736..0000000000 --- a/.woodpecker/.lint.yml +++ /dev/null @@ -1,10 +0,0 @@ -pipeline: - lint: - image: pleromaforkci/ci-base:1.13 - commands: - - mix local.hex --force - - mix local.rebar --force - - mix format --check-formatted - when: - event: - - push diff --git a/.woodpecker/.release.yml b/.woodpecker/.release.yml index 5efef118f4..6a972acbbf 100644 --- a/.woodpecker/.release.yml +++ b/.woodpecker/.release.yml @@ -19,6 +19,7 @@ pipeline: - push branch: - develop + - stable secrets: - SCW_ACCESS_KEY - SCW_SECRET_KEY @@ -35,13 +36,13 @@ pipeline: - echo "import Mix.Config" > config/prod.secret.exs - mix local.hex --force - mix local.rebar --force + - export PLEROMA_BUILD_BRANCH=$CI_COMMIT_BRANCH - mix deps.clean --all - mix deps.get --only prod - mkdir release - - export PLEROMA_BUILD_BRANCH=develop - mix release --path release - zip akkoma-${tag}.zip -r release - - rclone copyto akkoma-${tag}.zip scaleway:akkoma-updates/develop/akkoma-${tag}.zip + - rclone copyto akkoma-${tag}.zip scaleway:akkoma-updates/$CI_COMMIT_BRANCH/akkoma-${tag}.zip musl: when: @@ -49,6 +50,7 @@ pipeline: - push branch: - develop + - stable secrets: - SCW_ACCESS_KEY - SCW_SECRET_KEY @@ -70,12 +72,12 @@ pipeline: - mix local.hex --force - mix local.rebar --force + - export PLEROMA_BUILD_BRANCH=$CI_COMMIT_BRANCH - mix deps.clean --all - mix deps.get --only prod - mix release --path release - - export PLEROMA_BUILD_BRANCH=develop - zip akkoma-${tag}.zip -r release - - rclone copyto akkoma-${tag}.zip scaleway:akkoma-updates/develop/akkoma-${tag}-musl.zip + - rclone copyto akkoma-${tag}.zip scaleway:akkoma-updates/$CI_COMMIT_BRANCH/akkoma-${tag}-musl.zip musl1.1: when: @@ -83,6 +85,7 @@ pipeline: - push branch: - develop + - stable secrets: - SCW_ACCESS_KEY - SCW_SECRET_KEY @@ -106,9 +109,9 @@ pipeline: - mix local.hex --force - mix local.rebar --force + - export PLEROMA_BUILD_BRANCH=$CI_COMMIT_BRANCH - mix deps.clean --all - mix deps.get --only prod - mix release --path release - - export PLEROMA_BUILD_BRANCH=develop - zip akkoma-${tag}.zip -r release - - rclone copyto akkoma-${tag}.zip scaleway:akkoma-updates/develop/akkoma-${tag}-musl11.zip + - rclone copyto akkoma-${tag}.zip scaleway:akkoma-updates/$CI_COMMIT_BRANCH/akkoma-${tag}-musl11.zip diff --git a/.woodpecker/.test.yml b/.woodpecker/.test.yml index 6724d363dd..f416550298 100644 --- a/.woodpecker/.test.yml +++ b/.woodpecker/.test.yml @@ -1,16 +1,22 @@ -depends_on: -- lint - matrix: ELIXIR_VERSION: - 1.13 pipeline: + lint: + when: + event: + - pull_request + image: pleromaforkci/ci-base:1.13 + commands: + - mix local.hex --force + - mix local.rebar --force + - mix format --check-formatted + build: image: pleromaforkci/ci-base:${ELIXIR_VERSION} when: event: - - push - pull_request environment: MIX_ENV: test @@ -25,7 +31,6 @@ pipeline: image: pleromaforkci/ci-base:${ELIXIR_VERSION} when: event: - - push - pull_request environment: MIX_ENV: test @@ -36,6 +41,7 @@ pipeline: commands: - mix local.hex --force - mix local.rebar --force + - mix deps.get - mix ecto.drop -f -q - mix ecto.create - mix ecto.migrate @@ -44,6 +50,9 @@ pipeline: services: postgres: image: postgres:13 + when: + event: + - pull_request environment: POSTGRES_DB: pleroma_test POSTGRES_USER: postgres diff --git a/CHANGELOG.md b/CHANGELOG.md index 131453a12c..5c8014f16a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Upgrade Notes - The bundled frontend has been removed, you will need to run the `pleroma.frontend install` mix task to install your frontend of choice. Configuration by default is set to `pleroma-fe`. +- Admin-FE users will have to ensure that :admin is set _BEFORE_ restart, or +you might end up in a situation where you don't have an ability to get it. ## 2.5.2 diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000..bc8719e68f --- /dev/null +++ b/Makefile @@ -0,0 +1,7 @@ +all: install + pipenv run mkdocs build + +install: + pipenv install +clean: + rm -rf docs diff --git a/README.md b/README.md index 69a3d48ee6..38ca76003f 100644 --- a/README.md +++ b/README.md @@ -8,27 +8,27 @@ This is a fork of Pleroma, which is a microblogging server software that can fed Akkoma is written in Elixir and uses PostgresSQL for data storage. -For clients it supports the [Mastodon client API](https://docs.joinmastodon.org/api/guidelines/) with Pleroma extensions (see the API section on ). +For clients it supports the [Mastodon client API](https://docs.joinmastodon.org/api/guidelines/) with Pleroma extensions (see the API section on ). -- [Client Applications for Pleroma](https://docs.akkoma.dev/main/backend/clients/) +- [Client Applications for Pleroma](https://docs.akkoma.dev/stable/clients/) ## Installation ### OTP releases (Recommended) -If you are running Linux (glibc or musl) on x86, the recommended way to install Pleroma is by using OTP releases. OTP releases are as close as you can get to binary releases with Erlang/Elixir. The release is self-contained, and provides everything needed to boot it. The installation instructions are available [here](https://docs.akkoma.dev/main/backend/installation/otp_en/). +If you are running Linux (glibc or musl) on x86, the recommended way to install Pleroma is by using OTP releases. OTP releases are as close as you can get to binary releases with Erlang/Elixir. The release is self-contained, and provides everything needed to boot it. The installation instructions are available [here](https://docs.akkoma.dev/stable/installation/otp_en/). ### From Source If your platform is not supported, or you just want to be able to edit the source code easily, you may install Pleroma from source. -- [Alpine Linux](https://docs.akkoma.dev/main/backend/installation/alpine_linux_en/) -- [Arch Linux](https://docs.akkoma.dev/main/backend/installation/arch_linux_en/) -- [Debian-based](https://docs.akkoma.dev/main/backend/installation/debian_based_en/) -- [Debian-based (jp)](https://docs.akkoma.dev/main/backend/installation/debian_based_jp/) -- [FreeBSD](https://docs.akkoma.dev/main/backend/installation/freebsd_en/) -- [Gentoo Linux](https://docs.akkoma.dev/main/backend/installation/gentoo_en/) -- [NetBSD](https://docs.akkoma.dev/main/backend/installation/netbsd_en/) -- [OpenBSD](https://docs.akkoma.dev/main/backend/installation/openbsd_en/) -- [OpenBSD (fi)](https://docs.akkoma.dev/main/backend/installation/openbsd_fi/) +- [Alpine Linux](https://docs.akkoma.dev/stable/installation/alpine_linux_en/) +- [Arch Linux](https://docs.akkoma.dev/stable/installation/arch_linux_en/) +- [Debian-based](https://docs.akkoma.dev/stable/installation/debian_based_en/) +- [Debian-based (jp)](https://docs.akkoma.dev/stable/installation/debian_based_jp/) +- [FreeBSD](https://docs.akkoma.dev/stable/installation/freebsd_en/) +- [Gentoo Linux](https://docs.akkoma.dev/stable/installation/gentoo_en/) +- [NetBSD](https://docs.akkoma.dev/stable/installation/netbsd_en/) +- [OpenBSD](https://docs.akkoma.dev/stable/installation/openbsd_en/) +- [OpenBSD (fi)](https://docs.akkoma.dev/stable/installation/openbsd_fi/) ### Docker While we don’t provide docker files, other people have written very good ones. Take a look at or . @@ -42,4 +42,4 @@ If you ever encounter compilation issues during the updating of Pleroma, you can - `rm -r _build` ## Documentation -- https://docs.akkoma.dev/main +- https://docs.akkoma.dev/stable diff --git a/config/config.exs b/config/config.exs index dddb5cea54..9186b011d4 100644 --- a/config/config.exs +++ b/config/config.exs @@ -718,7 +718,8 @@ config :pleroma, :static_fe, enabled: false # available: %{...} config :pleroma, :frontends, - primary: %{"name" => "pleroma-fe", "ref" => "develop"}, + primary: %{"name" => "pleroma-fe", "ref" => "stable"}, + admin: %{"name" => "admin-fe", "ref" => "stable"}, swagger: %{ "name" => "swagger-ui", "ref" => "stable", @@ -728,8 +729,9 @@ config :pleroma, :frontends, "pleroma-fe" => %{ "name" => "pleroma-fe", "git" => "https://akkoma.dev/AkkomaGang/pleroma-fe", - "build_url" => "https://akkoma-updates.s3-website.fr-par.scw.cloud/frontend/akkoma-fe.zip", - "ref" => "develop", + "build_url" => + "https://akkoma-updates.s3-website.fr-par.scw.cloud/frontend/${ref}/akkoma-fe.zip", + "ref" => "stable", "build_dir" => "dist" }, # Mastodon-Fe cannot be set as a primary - this is only here so we can update this seperately @@ -743,8 +745,9 @@ config :pleroma, :frontends, "admin-fe" => %{ "name" => "admin-fe", "git" => "https://akkoma.dev/AkkomaGang/admin-fe", - "build_url" => "https://akkoma-updates.s3-website.fr-par.scw.cloud/frontend/admin-fe.zip", - "ref" => "develop" + "build_url" => + "https://akkoma-updates.s3-website.fr-par.scw.cloud/frontend/${ref}/admin-fe.zip", + "ref" => "stable" }, "soapbox-fe" => %{ "name" => "soapbox-fe", diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000000..e51c1d1887 --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,7 @@ +all: install + pipenv run mkdocs build + +install: + pipenv install +clean: + rm -rf site diff --git a/docs/Pipfile b/docs/Pipfile new file mode 100644 index 0000000000..3e538a5401 --- /dev/null +++ b/docs/Pipfile @@ -0,0 +1,10 @@ +[[source]] +name = "pypi" +url = "https://pypi.org/simple" +verify_ssl = true + +[dev-packages] + +[packages] +mkdocs-material = "*" +markdown-include = "*" diff --git a/docs/Pipfile.lock b/docs/Pipfile.lock new file mode 100644 index 0000000000..ae39a27761 --- /dev/null +++ b/docs/Pipfile.lock @@ -0,0 +1,277 @@ +{ + "_meta": { + "hash": { + "sha256": "926d34630c729228bb015cb958c04f8269c57f5ca1ffc2ceab1dfd1798884772" + }, + "pipfile-spec": 6, + "requires": {}, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "click": { + "hashes": [ + "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e", + "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48" + ], + "markers": "python_version >= '3.7'", + "version": "==8.1.3" + }, + "ghp-import": { + "hashes": [ + "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", + "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343" + ], + "version": "==2.1.0" + }, + "importlib-metadata": { + "hashes": [ + "sha256:637245b8bab2b6502fcbc752cc4b7a6f6243bb02b31c5c26156ad103d3d45670", + "sha256:7401a975809ea1fdc658c3aa4f78cc2195a0e019c5cbc4c06122884e9ae80c23" + ], + "markers": "python_version >= '3.7'", + "version": "==4.12.0" + }, + "jinja2": { + "hashes": [ + "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852", + "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61" + ], + "markers": "python_version >= '3.7'", + "version": "==3.1.2" + }, + "markdown": { + "hashes": [ + "sha256:cbb516f16218e643d8e0a95b309f77eb118cb138d39a4f27851e6a63581db874", + "sha256:f5da449a6e1c989a4cea2631aa8ee67caa5a2ef855d551c88f9e309f4634c621" + ], + "markers": "python_version >= '3.6'", + "version": "==3.3.7" + }, + "markdown-include": { + "hashes": [ + "sha256:6f5d680e36f7780c7f0f61dca53ca581bd50d1b56137ddcd6353efafa0c3e4a2" + ], + "index": "pypi", + "version": "==0.6.0" + }, + "markupsafe": { + "hashes": [ + "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003", + "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88", + "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5", + "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7", + "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a", + "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603", + "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1", + "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135", + "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247", + "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6", + "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601", + "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77", + "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02", + "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e", + "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63", + "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f", + "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980", + "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b", + "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812", + "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff", + "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96", + "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1", + "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925", + "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a", + "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6", + "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e", + "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f", + "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4", + "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f", + "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3", + "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c", + "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a", + "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417", + "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a", + "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a", + "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37", + "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452", + "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933", + "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a", + "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7" + ], + "markers": "python_version >= '3.7'", + "version": "==2.1.1" + }, + "mergedeep": { + "hashes": [ + "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", + "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307" + ], + "markers": "python_version >= '3.6'", + "version": "==1.3.4" + }, + "mkdocs": { + "hashes": [ + "sha256:26bd2b03d739ac57a3e6eed0b7bcc86168703b719c27b99ad6ca91dc439aacde", + "sha256:b504405b04da38795fec9b2e5e28f6aa3a73bb0960cb6d5d27ead28952bd35ea" + ], + "markers": "python_version >= '3.6'", + "version": "==1.3.0" + }, + "mkdocs-material": { + "hashes": [ + "sha256:263f2721f3abe533b61f7c8bed435a0462620912742c919821ac2d698b4bfe67", + "sha256:dc82b667d2a83f0de581b46a6d0949732ab77e7638b87ea35b770b33bc02e75a" + ], + "index": "pypi", + "version": "==8.3.9" + }, + "mkdocs-material-extensions": { + "hashes": [ + "sha256:a82b70e533ce060b2a5d9eb2bc2e1be201cf61f901f93704b4acf6e3d5983a44", + "sha256:bfd24dfdef7b41c312ede42648f9eb83476ea168ec163b613f9abd12bbfddba2" + ], + "markers": "python_version >= '3.6'", + "version": "==1.0.3" + }, + "packaging": { + "hashes": [ + "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb", + "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522" + ], + "markers": "python_version >= '3.6'", + "version": "==21.3" + }, + "pygments": { + "hashes": [ + "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb", + "sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519" + ], + "markers": "python_version >= '3.6'", + "version": "==2.12.0" + }, + "pymdown-extensions": { + "hashes": [ + "sha256:3ef2d998c0d5fa7eb09291926d90d69391283561cf6306f85cd588a5eb5befa0", + "sha256:ec141c0f4983755349f0c8710416348d1a13753976c028186ed14f190c8061c4" + ], + "markers": "python_version >= '3.7'", + "version": "==9.5" + }, + "pyparsing": { + "hashes": [ + "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb", + "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc" + ], + "markers": "python_full_version >= '3.6.8'", + "version": "==3.0.9" + }, + "python-dateutil": { + "hashes": [ + "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", + "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==2.8.2" + }, + "pyyaml": { + "hashes": [ + "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293", + "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b", + "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57", + "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b", + "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4", + "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07", + "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba", + "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9", + "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287", + "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513", + "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0", + "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0", + "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92", + "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f", + "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2", + "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc", + "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c", + "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86", + "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4", + "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c", + "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34", + "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b", + "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c", + "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb", + "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737", + "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3", + "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d", + "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53", + "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78", + "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803", + "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a", + "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174", + "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5" + ], + "markers": "python_version >= '3.6'", + "version": "==6.0" + }, + "pyyaml-env-tag": { + "hashes": [ + "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb", + "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069" + ], + "markers": "python_version >= '3.6'", + "version": "==0.1" + }, + "six": { + "hashes": [ + "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", + "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.16.0" + }, + "watchdog": { + "hashes": [ + "sha256:083171652584e1b8829581f965b9b7723ca5f9a2cd7e20271edf264cfd7c1412", + "sha256:117ffc6ec261639a0209a3252546b12800670d4bf5f84fbd355957a0595fe654", + "sha256:186f6c55abc5e03872ae14c2f294a153ec7292f807af99f57611acc8caa75306", + "sha256:195fc70c6e41237362ba720e9aaf394f8178bfc7fa68207f112d108edef1af33", + "sha256:226b3c6c468ce72051a4c15a4cc2ef317c32590d82ba0b330403cafd98a62cfd", + "sha256:247dcf1df956daa24828bfea5a138d0e7a7c98b1a47cf1fa5b0c3c16241fcbb7", + "sha256:255bb5758f7e89b1a13c05a5bceccec2219f8995a3a4c4d6968fe1de6a3b2892", + "sha256:43ce20ebb36a51f21fa376f76d1d4692452b2527ccd601950d69ed36b9e21609", + "sha256:4f4e1c4aa54fb86316a62a87b3378c025e228178d55481d30d857c6c438897d6", + "sha256:5952135968519e2447a01875a6f5fc8c03190b24d14ee52b0f4b1682259520b1", + "sha256:64a27aed691408a6abd83394b38503e8176f69031ca25d64131d8d640a307591", + "sha256:6b17d302850c8d412784d9246cfe8d7e3af6bcd45f958abb2d08a6f8bedf695d", + "sha256:70af927aa1613ded6a68089a9262a009fbdf819f46d09c1a908d4b36e1ba2b2d", + "sha256:7a833211f49143c3d336729b0020ffd1274078e94b0ae42e22f596999f50279c", + "sha256:8250546a98388cbc00c3ee3cc5cf96799b5a595270dfcfa855491a64b86ef8c3", + "sha256:97f9752208f5154e9e7b76acc8c4f5a58801b338de2af14e7e181ee3b28a5d39", + "sha256:9f05a5f7c12452f6a27203f76779ae3f46fa30f1dd833037ea8cbc2887c60213", + "sha256:a735a990a1095f75ca4f36ea2ef2752c99e6ee997c46b0de507ba40a09bf7330", + "sha256:ad576a565260d8f99d97f2e64b0f97a48228317095908568a9d5c786c829d428", + "sha256:b530ae007a5f5d50b7fbba96634c7ee21abec70dc3e7f0233339c81943848dc1", + "sha256:bfc4d351e6348d6ec51df007432e6fe80adb53fd41183716017026af03427846", + "sha256:d3dda00aca282b26194bdd0adec21e4c21e916956d972369359ba63ade616153", + "sha256:d9820fe47c20c13e3c9dd544d3706a2a26c02b2b43c993b62fcd8011bcc0adb3", + "sha256:ed80a1628cee19f5cfc6bb74e173f1b4189eb532e705e2a13e3250312a62e0c9", + "sha256:ee3e38a6cc050a8830089f79cbec8a3878ec2fe5160cdb2dc8ccb6def8552658" + ], + "markers": "python_version >= '3.6'", + "version": "==2.1.9" + }, + "zipp": { + "hashes": [ + "sha256:56bf8aadb83c24db6c4b577e13de374ccfb67da2078beba1d037c17980bf43ad", + "sha256:c4f6e5bbf48e74f7a38e7cc5b0480ff42b0ae5178957d564d18932525d5cf099" + ], + "markers": "python_version >= '3.7'", + "version": "==3.8.0" + } + }, + "develop": {} +} diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000000..fcf043f561 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,34 @@ +## Building the docs + +You don't need to build and test the docs as long as you make sure the syntax is correct. But in case you do want to build the docs, feel free to do so. + +You'll need to install mkdocs for which you can check the [mkdocs installation guide](https://www.mkdocs.org/#installation). Generally it's best to install it using `pip`. You'll also need to install the correct dependencies. + +### Example using a Debian based distro + +#### 1. Install pipenv and dependencies + +```shell +pip install pipenv +pipenv sync +``` + +#### 2. (Optional) Activate the virtual environment + +Since dependencies are installed in a virtual environment, you can't use them directly. To use them you should either prefix the command with `pipenv run`, or activate the virtual environment for current shell by executing `pipenv shell` once. + +#### 3. Build the docs using the script + +```shell +[pipenv run] make all +``` + +#### 4. Serve the files + +A folder `site` containing the static html pages will have been created. You can serve them from a server by pointing your server software (nginx, apache...) to this location. During development, you can run locally with + +```shell +[pipenv run] mkdocs serve +``` + +This handles setting up an http server and rebuilding when files change. You can then access the docs on diff --git a/docs/administration/CLI_tasks/config.md b/docs/docs/administration/CLI_tasks/config.md similarity index 97% rename from docs/administration/CLI_tasks/config.md rename to docs/docs/administration/CLI_tasks/config.md index 5a7ae2c7ab..a0199d06fe 100644 --- a/docs/administration/CLI_tasks/config.md +++ b/docs/docs/administration/CLI_tasks/config.md @@ -1,6 +1,6 @@ # Transfering the config to/from the database -{! backend/administration/CLI_tasks/general_cli_task_info.include !} +{! administration/CLI_tasks/general_cli_task_info.include !} ## Transfer config from file to DB. diff --git a/docs/administration/CLI_tasks/database.md b/docs/docs/administration/CLI_tasks/database.md similarity index 98% rename from docs/administration/CLI_tasks/database.md rename to docs/docs/administration/CLI_tasks/database.md index c53c499211..8b2ab93e62 100644 --- a/docs/administration/CLI_tasks/database.md +++ b/docs/docs/administration/CLI_tasks/database.md @@ -1,6 +1,6 @@ # Database maintenance tasks -{! backend/administration/CLI_tasks/general_cli_task_info.include !} +{! administration/CLI_tasks/general_cli_task_info.include !} !!! danger These mix tasks can take a long time to complete. Many of them were written to address specific database issues that happened because of bugs in migrations or other specific scenarios. Do not run these tasks "just in case" if everything is fine your instance. diff --git a/docs/administration/CLI_tasks/digest.md b/docs/docs/administration/CLI_tasks/digest.md similarity index 87% rename from docs/administration/CLI_tasks/digest.md rename to docs/docs/administration/CLI_tasks/digest.md index a590581e35..7a6569adad 100644 --- a/docs/administration/CLI_tasks/digest.md +++ b/docs/docs/administration/CLI_tasks/digest.md @@ -1,6 +1,6 @@ # Managing digest emails -{! backend/administration/CLI_tasks/general_cli_task_info.include !} +{! administration/CLI_tasks/general_cli_task_info.include !} ## Send digest email since given date (user registration date by default) ignoring user activity status. diff --git a/docs/administration/CLI_tasks/email.md b/docs/docs/administration/CLI_tasks/email.md similarity index 90% rename from docs/administration/CLI_tasks/email.md rename to docs/docs/administration/CLI_tasks/email.md index 2bb57bea4d..f76096e075 100644 --- a/docs/administration/CLI_tasks/email.md +++ b/docs/docs/administration/CLI_tasks/email.md @@ -1,6 +1,6 @@ # EMail administration tasks -{! backend/administration/CLI_tasks/general_cli_task_info.include !} +{! administration/CLI_tasks/general_cli_task_info.include !} ## Send test email (instance email by default) diff --git a/docs/administration/CLI_tasks/emoji.md b/docs/docs/administration/CLI_tasks/emoji.md similarity index 96% rename from docs/administration/CLI_tasks/emoji.md rename to docs/docs/administration/CLI_tasks/emoji.md index e3d1b210ed..bad908dca7 100644 --- a/docs/administration/CLI_tasks/emoji.md +++ b/docs/docs/administration/CLI_tasks/emoji.md @@ -1,6 +1,6 @@ # Managing emoji packs -{! backend/administration/CLI_tasks/general_cli_task_info.include !} +{! administration/CLI_tasks/general_cli_task_info.include !} ## Lists emoji packs and metadata specified in the manifest diff --git a/docs/administration/CLI_tasks/frontend.md b/docs/docs/administration/CLI_tasks/frontend.md similarity index 100% rename from docs/administration/CLI_tasks/frontend.md rename to docs/docs/administration/CLI_tasks/frontend.md diff --git a/docs/administration/CLI_tasks/general_cli_task_info.include b/docs/docs/administration/CLI_tasks/general_cli_task_info.include similarity index 100% rename from docs/administration/CLI_tasks/general_cli_task_info.include rename to docs/docs/administration/CLI_tasks/general_cli_task_info.include diff --git a/docs/administration/CLI_tasks/instance.md b/docs/docs/administration/CLI_tasks/instance.md similarity index 96% rename from docs/administration/CLI_tasks/instance.md rename to docs/docs/administration/CLI_tasks/instance.md index 982b22bf3c..5c93cdb306 100644 --- a/docs/administration/CLI_tasks/instance.md +++ b/docs/docs/administration/CLI_tasks/instance.md @@ -1,6 +1,6 @@ # Managing instance configuration -{! backend/administration/CLI_tasks/general_cli_task_info.include !} +{! administration/CLI_tasks/general_cli_task_info.include !} ## Generate a new configuration file === "OTP" diff --git a/docs/administration/CLI_tasks/oauth_app.md b/docs/docs/administration/CLI_tasks/oauth_app.md similarity index 82% rename from docs/administration/CLI_tasks/oauth_app.md rename to docs/docs/administration/CLI_tasks/oauth_app.md index f0568491eb..8a49b3c090 100644 --- a/docs/administration/CLI_tasks/oauth_app.md +++ b/docs/docs/administration/CLI_tasks/oauth_app.md @@ -1,6 +1,6 @@ # Creating trusted OAuth App -{! backend/administration/CLI_tasks/general_cli_task_info.include !} +{! administration/CLI_tasks/general_cli_task_info.include !} ## Create trusted OAuth App. diff --git a/docs/administration/CLI_tasks/relay.md b/docs/docs/administration/CLI_tasks/relay.md similarity index 88% rename from docs/administration/CLI_tasks/relay.md rename to docs/docs/administration/CLI_tasks/relay.md index bdd7e8be4c..b510382bb9 100644 --- a/docs/administration/CLI_tasks/relay.md +++ b/docs/docs/administration/CLI_tasks/relay.md @@ -1,6 +1,6 @@ # Managing relays -{! backend/administration/CLI_tasks/general_cli_task_info.include !} +{! administration/CLI_tasks/general_cli_task_info.include !} ## Follow a relay diff --git a/docs/administration/CLI_tasks/robots_txt.md b/docs/docs/administration/CLI_tasks/robots_txt.md similarity index 89% rename from docs/administration/CLI_tasks/robots_txt.md rename to docs/docs/administration/CLI_tasks/robots_txt.md index 7eeedf5711..6cb9fd673b 100644 --- a/docs/administration/CLI_tasks/robots_txt.md +++ b/docs/docs/administration/CLI_tasks/robots_txt.md @@ -1,6 +1,6 @@ # Managing robots.txt -{! backend/administration/CLI_tasks/general_cli_task_info.include !} +{! administration/CLI_tasks/general_cli_task_info.include !} ## Generate a new robots.txt file and add it to the static directory diff --git a/docs/administration/CLI_tasks/uploads.md b/docs/docs/administration/CLI_tasks/uploads.md similarity index 87% rename from docs/administration/CLI_tasks/uploads.md rename to docs/docs/administration/CLI_tasks/uploads.md index 8585ec76bc..40602121c0 100644 --- a/docs/administration/CLI_tasks/uploads.md +++ b/docs/docs/administration/CLI_tasks/uploads.md @@ -1,6 +1,6 @@ # Managing uploads -{! backend/administration/CLI_tasks/general_cli_task_info.include !} +{! administration/CLI_tasks/general_cli_task_info.include !} ## Migrate uploads from local to remote storage === "OTP" diff --git a/docs/administration/CLI_tasks/user.md b/docs/docs/administration/CLI_tasks/user.md similarity index 98% rename from docs/administration/CLI_tasks/user.md rename to docs/docs/administration/CLI_tasks/user.md index 24fdaeab4a..0d19b5622e 100644 --- a/docs/administration/CLI_tasks/user.md +++ b/docs/docs/administration/CLI_tasks/user.md @@ -1,6 +1,6 @@ # Managing users -{! backend/administration/CLI_tasks/general_cli_task_info.include !} +{! administration/CLI_tasks/general_cli_task_info.include !} ## Create a user diff --git a/docs/administration/backup.md b/docs/docs/administration/backup.md similarity index 100% rename from docs/administration/backup.md rename to docs/docs/administration/backup.md diff --git a/docs/administration/updating.md b/docs/docs/administration/updating.md similarity index 94% rename from docs/administration/updating.md rename to docs/docs/administration/updating.md index 7c2cd2a160..6f7ffcd630 100644 --- a/docs/administration/updating.md +++ b/docs/docs/administration/updating.md @@ -8,7 +8,7 @@ Besides that, doing the following is generally enough: ```sh # Download the new release -su akkoma -s $SHELL -lc "./bin/pleroma_ctl update --branch develop" +su akkoma -s $SHELL -lc "./bin/pleroma_ctl update" # Migrate the database, you are advised to stop the instance before doing that su akkoma -s $SHELL -lc "./bin/pleroma_ctl migrate" diff --git a/docs/clients.md b/docs/docs/clients.md similarity index 100% rename from docs/clients.md rename to docs/docs/clients.md diff --git a/docs/configuration/auth.md b/docs/docs/configuration/auth.md similarity index 100% rename from docs/configuration/auth.md rename to docs/docs/configuration/auth.md diff --git a/docs/configuration/cheatsheet.md b/docs/docs/configuration/cheatsheet.md similarity index 99% rename from docs/configuration/cheatsheet.md rename to docs/docs/configuration/cheatsheet.md index 17da585942..c7df001904 100644 --- a/docs/configuration/cheatsheet.md +++ b/docs/docs/configuration/cheatsheet.md @@ -249,9 +249,11 @@ Notes: * `total_user_limit`: the number of scheduled activities a user is allowed to create in total (Default: `300`) * `enabled`: whether scheduled activities are sent to the job queue to be executed +## Frontend Management + ### :frontend_configurations -This can be used to configure a keyword list that keeps the configuration data for any kind of frontend. By default, settings for `pleroma_fe` and `masto_fe` are configured. You can find the documentation for `pleroma_fe` configuration into [Pleroma-FE configuration and customization for instance administrators](/frontend/CONFIGURATION/#options). +This can be used to configure a keyword list that keeps the configuration data for any kind of frontend. By default, settings for `pleroma_fe` and `masto_fe` are configured. You can find the documentation for `pleroma_fe` configuration into [Pleroma-FE configuration and customization for instance administrators](https://docs-fe.akkoma.dev/stable/CONFIGURATION/#options). Frontends can access these settings at `/api/v1/pleroma/frontend_configurations` diff --git a/docs/configuration/custom_emoji.md b/docs/docs/configuration/custom_emoji.md similarity index 100% rename from docs/configuration/custom_emoji.md rename to docs/docs/configuration/custom_emoji.md diff --git a/docs/configuration/frontend_management.md b/docs/docs/configuration/frontend_management.md similarity index 96% rename from docs/configuration/frontend_management.md rename to docs/docs/configuration/frontend_management.md index 077fd9c31e..a251205894 100644 --- a/docs/configuration/frontend_management.md +++ b/docs/docs/configuration/frontend_management.md @@ -13,12 +13,12 @@ Example: ```elixir config :pleroma, :frontends, primary: %{ - "name" => "pleroma", + "name" => "pleroma-fe", "ref" => "stable" }, admin: %{ - "name" => "admin", - "ref" => "develop" + "name" => "admin-fe", + "ref" => "stable" } ``` diff --git a/docs/configuration/hardening.md b/docs/docs/configuration/hardening.md similarity index 100% rename from docs/configuration/hardening.md rename to docs/docs/configuration/hardening.md diff --git a/docs/configuration/howto_database_config.md b/docs/docs/configuration/howto_database_config.md similarity index 100% rename from docs/configuration/howto_database_config.md rename to docs/docs/configuration/howto_database_config.md diff --git a/docs/configuration/howto_ejabberd.md b/docs/docs/configuration/howto_ejabberd.md similarity index 100% rename from docs/configuration/howto_ejabberd.md rename to docs/docs/configuration/howto_ejabberd.md diff --git a/docs/configuration/howto_mediaproxy.md b/docs/docs/configuration/howto_mediaproxy.md similarity index 100% rename from docs/configuration/howto_mediaproxy.md rename to docs/docs/configuration/howto_mediaproxy.md diff --git a/docs/configuration/howto_mongooseim.md b/docs/docs/configuration/howto_mongooseim.md similarity index 100% rename from docs/configuration/howto_mongooseim.md rename to docs/docs/configuration/howto_mongooseim.md diff --git a/docs/configuration/howto_proxy.md b/docs/docs/configuration/howto_proxy.md similarity index 100% rename from docs/configuration/howto_proxy.md rename to docs/docs/configuration/howto_proxy.md diff --git a/docs/configuration/howto_search_cjk.md b/docs/docs/configuration/howto_search_cjk.md similarity index 100% rename from docs/configuration/howto_search_cjk.md rename to docs/docs/configuration/howto_search_cjk.md diff --git a/docs/configuration/howto_set_richmedia_cache_ttl_based_on_image.md b/docs/docs/configuration/howto_set_richmedia_cache_ttl_based_on_image.md similarity index 100% rename from docs/configuration/howto_set_richmedia_cache_ttl_based_on_image.md rename to docs/docs/configuration/howto_set_richmedia_cache_ttl_based_on_image.md diff --git a/docs/configuration/howto_theming_your_instance.md b/docs/docs/configuration/howto_theming_your_instance.md similarity index 98% rename from docs/configuration/howto_theming_your_instance.md rename to docs/docs/configuration/howto_theming_your_instance.md index 77b3964cff..213afcf13d 100644 --- a/docs/configuration/howto_theming_your_instance.md +++ b/docs/docs/configuration/howto_theming_your_instance.md @@ -60,7 +60,7 @@ Example of `my-awesome-theme.json` where we add the name "My Awesome Theme" ### Set as default theme -Now we can set the new theme as default in the [Pleroma FE configuration](../../../frontend/CONFIGURATION). +Now we can set the new theme as default in the [Pleroma FE configuration](https://docs-fe.akkoma.dev/stable/CONFIGURATION). Example of adding the new theme in the back-end config files ```elixir diff --git a/docs/configuration/i2p.md b/docs/docs/configuration/i2p.md similarity index 100% rename from docs/configuration/i2p.md rename to docs/docs/configuration/i2p.md diff --git a/docs/configuration/mrf.md b/docs/docs/configuration/mrf.md similarity index 100% rename from docs/configuration/mrf.md rename to docs/docs/configuration/mrf.md diff --git a/docs/configuration/onion_federation.md b/docs/docs/configuration/onion_federation.md similarity index 100% rename from docs/configuration/onion_federation.md rename to docs/docs/configuration/onion_federation.md diff --git a/docs/configuration/optimizing_beam.md b/docs/docs/configuration/optimizing_beam.md similarity index 100% rename from docs/configuration/optimizing_beam.md rename to docs/docs/configuration/optimizing_beam.md diff --git a/docs/configuration/postgresql.md b/docs/docs/configuration/postgresql.md similarity index 100% rename from docs/configuration/postgresql.md rename to docs/docs/configuration/postgresql.md diff --git a/docs/configuration/search.md b/docs/docs/configuration/search.md similarity index 99% rename from docs/configuration/search.md rename to docs/docs/configuration/search.md index 3c5611309b..ebb2c6ab7f 100644 --- a/docs/configuration/search.md +++ b/docs/docs/configuration/search.md @@ -1,6 +1,6 @@ # Configuring search -{! backend/administration/CLI_tasks/general_cli_task_info.include !} +{! administration/CLI_tasks/general_cli_task_info.include !} ## Built-in search diff --git a/docs/configuration/static_dir.md b/docs/docs/configuration/static_dir.md similarity index 100% rename from docs/configuration/static_dir.md rename to docs/docs/configuration/static_dir.md diff --git a/docs/configuration/storing_remote_media.md b/docs/docs/configuration/storing_remote_media.md similarity index 100% rename from docs/configuration/storing_remote_media.md rename to docs/docs/configuration/storing_remote_media.md diff --git a/docs/docs/css/extra.css b/docs/docs/css/extra.css new file mode 100644 index 0000000000..b5ceb8a8a8 --- /dev/null +++ b/docs/docs/css/extra.css @@ -0,0 +1,28 @@ +p, a, li, pre { + font-family: "Tiresias PCFont", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !important; +} + +code, +.codehilite pre { + font-weight: bold; +} + +:root > * { + --md-primary-fg-color: #593196; + --md-accent-fg-color: #455a63; +} + +@font-face { + font-family: 'Tiresias PCFont'; + font-style: normal; + font-weight: 400; + src: local('Tiresias PCFont'), local('Tiresias PCFont'), + url('./fonts/Tiresias_PCfont.ttf') format('truetype') +} +@font-face { + font-family: 'Tiresias Infofont'; + font-style: normal; + font-weight: 400; + src: local('Tiresias Infofont'), local('Tiresias Infofont'), + url('./fonts/Tiresias_Infofont.ttf') format('truetype') +} diff --git a/docs/development/API/admin_api.md b/docs/docs/development/API/admin_api.md similarity index 100% rename from docs/development/API/admin_api.md rename to docs/docs/development/API/admin_api.md diff --git a/docs/development/API/chats.md b/docs/docs/development/API/chats.md similarity index 100% rename from docs/development/API/chats.md rename to docs/docs/development/API/chats.md diff --git a/docs/development/API/differences_in_mastoapi_responses.md b/docs/docs/development/API/differences_in_mastoapi_responses.md similarity index 100% rename from docs/development/API/differences_in_mastoapi_responses.md rename to docs/docs/development/API/differences_in_mastoapi_responses.md diff --git a/docs/development/API/nodeinfo.md b/docs/docs/development/API/nodeinfo.md similarity index 100% rename from docs/development/API/nodeinfo.md rename to docs/docs/development/API/nodeinfo.md diff --git a/docs/development/API/pleroma_api.md b/docs/docs/development/API/pleroma_api.md similarity index 100% rename from docs/development/API/pleroma_api.md rename to docs/docs/development/API/pleroma_api.md diff --git a/docs/development/API/prometheus.md b/docs/docs/development/API/prometheus.md similarity index 100% rename from docs/development/API/prometheus.md rename to docs/docs/development/API/prometheus.md diff --git a/docs/development/ap_extensions.md b/docs/docs/development/ap_extensions.md similarity index 100% rename from docs/development/ap_extensions.md rename to docs/docs/development/ap_extensions.md diff --git a/docs/development/authentication_authorization.md b/docs/docs/development/authentication_authorization.md similarity index 100% rename from docs/development/authentication_authorization.md rename to docs/docs/development/authentication_authorization.md diff --git a/docs/development/index.md b/docs/docs/development/index.md similarity index 100% rename from docs/development/index.md rename to docs/docs/development/index.md diff --git a/docs/development/setting_up_akkoma_dev.md b/docs/docs/development/setting_up_akkoma_dev.md similarity index 100% rename from docs/development/setting_up_akkoma_dev.md rename to docs/docs/development/setting_up_akkoma_dev.md diff --git a/docs/docs/fonts/Tiresias_Infofont.ttf b/docs/docs/fonts/Tiresias_Infofont.ttf new file mode 100755 index 0000000000000000000000000000000000000000..2a8a6aaa858bcd10ff63a76314483260775377ec GIT binary patch literal 42084 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 literal 0 HcmV?d00001 diff --git a/docs/docs/fonts/Tiresias_PCfont.ttf b/docs/docs/fonts/Tiresias_PCfont.ttf new file mode 100755 index 0000000000000000000000000000000000000000..c85364e9ecba4c37dfc74b86c449211fefd570ea GIT binary patch literal 72602 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 literal 0 HcmV?d00001 diff --git a/docs/docs/images/akko_badday.png b/docs/docs/images/akko_badday.png new file mode 100644 index 0000000000000000000000000000000000000000..b79c67dae438a291dcd6bcdbdd7295f27bd413d9 GIT binary patch literal 15791 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 A3jhEB literal 0 HcmV?d00001 diff --git a/docs/index.md b/docs/docs/index.md similarity index 97% rename from docs/index.md rename to docs/docs/index.md index db7e22aee3..f9340d5d38 100644 --- a/docs/index.md +++ b/docs/docs/index.md @@ -18,7 +18,7 @@ Installation instructions can be found in the installation section of these docs Great! Now you can explore the fediverse! Open the login page for your Akkoma instance (e.g. ) and login with your username and password. (If you don't have an account yet, click on Register) ### Pleroma-FE -The default front-end used by Akkoma is Pleroma-FE. You can find more information on what it is and how to use it in the [Introduction to Pleroma-FE](../frontend). +The default front-end used by Akkoma is Pleroma-FE. You can find more information on what it is and how to use it in the [Introduction to Pleroma-FE](https://docs-fe.akkoma.dev/stable/). ### Mastodon interface If the Pleroma-FE interface isn't your thing, or you're just trying something new but you want to keep using the familiar Mastodon interface, we got that too! diff --git a/docs/installation/alpine_linux_en.md b/docs/docs/installation/alpine_linux_en.md similarity index 96% rename from docs/installation/alpine_linux_en.md rename to docs/docs/installation/alpine_linux_en.md index 05b226aefa..f98998fb8c 100644 --- a/docs/installation/alpine_linux_en.md +++ b/docs/docs/installation/alpine_linux_en.md @@ -1,6 +1,6 @@ # Installing on Alpine Linux -{! backend/installation/otp_vs_from_source_source.include !} +{! installation/otp_vs_from_source_source.include !} ## Installation @@ -10,7 +10,7 @@ As of Alpine Linux v3.16, `doas` is the preferred way of running privileged comm If you are running an earlier version, replace `doas` with `sudo` (and use `sudo -Hu akkoma` instead of `doas -u akkoma`). If you want to run this guide with root, ignore the `doas` at the beginning of the lines, unless it calls a user like `doas -u akkoma`; in this case, use `su -l -s $SHELL -c 'command'` instead. -{! backend/installation/generic_dependencies.include !} +{! installation/generic_dependencies.include !} ### Prepare the system @@ -223,6 +223,6 @@ doas -u akkoma env MIX_ENV=prod mix pleroma.user new #### Further reading -{! backend/installation/further_reading.include !} +{! installation/further_reading.include !} -{! backend/support.include !} +{! support.include !} diff --git a/docs/installation/debian_based_en.md b/docs/docs/installation/debian_based_en.md similarity index 96% rename from docs/installation/debian_based_en.md rename to docs/docs/installation/debian_based_en.md index f2c9eb3b80..40503db0ce 100644 --- a/docs/installation/debian_based_en.md +++ b/docs/docs/installation/debian_based_en.md @@ -1,12 +1,12 @@ # Installing on Debian Based Distributions -{! backend/installation/otp_vs_from_source_source.include !} +{! installation/otp_vs_from_source_source.include !} ## Installation This guide will assume you are on Debian 11 (“bullseye”) or later. This guide should also work with Ubuntu 18.04 (“Bionic Beaver”) and later. It also assumes that you have administrative rights, either as root or a user with [sudo permissions](https://www.digitalocean.com/community/tutorials/how-to-add-delete-and-grant-sudo-privileges-to-users-on-a-debian-vps). If you want to run this guide with root, ignore the `sudo` at the beginning of the lines, unless it calls a user like `sudo -Hu akkoma`; in this case, use `su -s $SHELL -c 'command'` instead. -{! backend/installation/generic_dependencies.include !} +{! installation/generic_dependencies.include !} ### Prepare the system @@ -177,6 +177,6 @@ sudo -Hu akkoma MIX_ENV=prod mix pleroma.user new #### Further reading -{! backend/installation/further_reading.include !} +{! installation/further_reading.include !} -{! backend/support.include !} +{! support.include !} diff --git a/docs/installation/debian_based_jp.md b/docs/docs/installation/debian_based_jp.md similarity index 99% rename from docs/installation/debian_based_jp.md rename to docs/docs/installation/debian_based_jp.md index 51d24a2d7c..ec829c9039 100644 --- a/docs/installation/debian_based_jp.md +++ b/docs/docs/installation/debian_based_jp.md @@ -185,4 +185,4 @@ sudo -Hu akkoma MIX_ENV=prod mix pleroma.user new #### その他の設定とカスタマイズ -{! backend/installation/further_reading.include !} +{! installation/further_reading.include !} diff --git a/docs/installation/freebsd_en.md b/docs/docs/installation/freebsd_en.md similarity index 98% rename from docs/installation/freebsd_en.md rename to docs/docs/installation/freebsd_en.md index ff60bd27ed..be735a9984 100644 --- a/docs/installation/freebsd_en.md +++ b/docs/docs/installation/freebsd_en.md @@ -2,7 +2,7 @@ This document was written for FreeBSD 12.1, but should be work on future releases. -{! backend/installation/generic_dependencies.include !} +{! installation/generic_dependencies.include !} ## Installing software used in this guide @@ -213,4 +213,4 @@ Restart nginx with `# service nginx restart` and you should be up and running. Make sure your time is in sync, or other instances will receive your posts with incorrect timestamps. You should have ntpd running. -{! backend/support.include !} +{! support.include !} diff --git a/docs/installation/further_reading.include b/docs/docs/installation/further_reading.include similarity index 100% rename from docs/installation/further_reading.include rename to docs/docs/installation/further_reading.include diff --git a/docs/installation/generic_dependencies.include b/docs/docs/installation/generic_dependencies.include similarity index 100% rename from docs/installation/generic_dependencies.include rename to docs/docs/installation/generic_dependencies.include diff --git a/docs/installation/gentoo_en.md b/docs/docs/installation/gentoo_en.md similarity index 98% rename from docs/installation/gentoo_en.md rename to docs/docs/installation/gentoo_en.md index a8a5f157ae..4649b63bfc 100644 --- a/docs/installation/gentoo_en.md +++ b/docs/docs/installation/gentoo_en.md @@ -1,12 +1,12 @@ # Installing on Gentoo GNU/Linux -{! backend/installation/otp_vs_from_source_source.include !} +{! installation/otp_vs_from_source_source.include !} ## Installation This guide will assume that you have administrative rights, either as root or a user with [sudo permissions](https://wiki.gentoo.org/wiki/Sudo). Lines that begin with `#` indicate that they should be run as the superuser. Lines using `$` should be run as the indicated user, e.g. `akkoma$` should be run as the `akkoma` user. -{! backend/installation/generic_dependencies.include !} +{! installation/generic_dependencies.include !} ### Your make.conf, package.use, and USE flags @@ -295,6 +295,6 @@ If you opted to allow sudo for the `akkoma` user but would like to remove the ab #### Further reading -{! backend/installation/further_reading.include !} +{! installation/further_reading.include !} -{! backend/support.include !} +{! support.include !} diff --git a/docs/installation/migrating_from_source_otp_en.md b/docs/docs/installation/migrating_from_source_otp_en.md similarity index 98% rename from docs/installation/migrating_from_source_otp_en.md rename to docs/docs/installation/migrating_from_source_otp_en.md index d84a08b3c8..148564d9a2 100644 --- a/docs/installation/migrating_from_source_otp_en.md +++ b/docs/docs/installation/migrating_from_source_otp_en.md @@ -1,6 +1,6 @@ # Switching a from-source install to OTP releases -{! backend/installation/otp_vs_from_source.include !} +{! installation/otp_vs_from_source.include !} In this guide we cover how you can migrate from a from source installation to one using OTP releases. @@ -142,4 +142,4 @@ Refer to [Running mix tasks](otp_en.md#running-mix-tasks) section from OTP relea ## Updating Refer to [Updating](otp_en.md#updating) section from OTP release installation guide. -{! backend/support.include !} +{! support.include !} diff --git a/docs/installation/migrating_to_akkoma.md b/docs/docs/installation/migrating_to_akkoma.md similarity index 100% rename from docs/installation/migrating_to_akkoma.md rename to docs/docs/installation/migrating_to_akkoma.md diff --git a/docs/installation/netbsd_en.md b/docs/docs/installation/netbsd_en.md similarity index 97% rename from docs/installation/netbsd_en.md rename to docs/docs/installation/netbsd_en.md index df396e4f42..c00a32e343 100644 --- a/docs/installation/netbsd_en.md +++ b/docs/docs/installation/netbsd_en.md @@ -1,6 +1,6 @@ # Installing on NetBSD -{! backend/installation/generic_dependencies.include !} +{! installation/generic_dependencies.include !} ## Installing software used in this guide @@ -204,6 +204,6 @@ incorrect timestamps. You should have ntpd running. #### Further reading -{! backend/installation/further_reading.include !} +{! installation/further_reading.include !} -{! backend/support.include !} +{! support.include !} diff --git a/docs/installation/openbsd_en.md b/docs/docs/installation/openbsd_en.md similarity index 98% rename from docs/installation/openbsd_en.md rename to docs/docs/installation/openbsd_en.md index abc0abb51c..c7e8cf0c09 100644 --- a/docs/installation/openbsd_en.md +++ b/docs/docs/installation/openbsd_en.md @@ -4,7 +4,7 @@ This guide describes the installation and configuration of akkoma (and the requi For any additional information regarding commands and configuration files mentioned here, check the man pages [online](https://man.openbsd.org/) or directly on your server with the man command. -{! backend/installation/generic_dependencies.include !} +{! installation/generic_dependencies.include !} ### Preparing the system #### Required software @@ -252,6 +252,6 @@ LC_ALL=en_US.UTF-8 MIX_ENV=prod mix pleroma.user new + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to + deal in the Software without restriction, including without limitation the + rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + IN THE SOFTWARE. +--> + +{% import "partials/language.html" as lang with context %} + + +{% set platform = config.extra.repo_icon or config.repo_url %} +{% if "github" in platform %} + {% set repo_type = "github" %} +{% elif "gitlab" in platform %} + {% set repo_type = "gitlab" %} +{% elif "bitbucket" in platform %} + {% set repo_type = "bitbucket" %} +{% else %} + {% set repo_type = "" %} +{% endif %} + +{% if page and page.url.startswith('backend') %} + {% set repo_url = "https://git.pleroma.social/pleroma/pleroma" %} + {% set repo_name = "pleroma/pleroma" %} +{% elif page and page.url.startswith('frontend') %} + {% set repo_url = "https://git.pleroma.social/pleroma/pleroma-fe" %} + {% set repo_name = "pleroma/pleroma-fe" %} +{% else %} + {% set repo_url = config.repo_url %} + {% set repo_name = config.repo_name %} +{% endif %} + + + + {% if repo_type %} +
+ + + +
+ {% endif %} +
+ {{ repo_name }} +
+
diff --git a/installation/apache/akkoma-apache.conf b/installation/apache/akkoma-apache.conf index c9f1235322..65bbf15e19 100644 --- a/installation/apache/akkoma-apache.conf +++ b/installation/apache/akkoma-apache.conf @@ -8,7 +8,7 @@ # 'a2ensite akkoma-apache.conf', then restart Apache. # # Optional: enable disk-based caching for the media proxy -# For details, see https://docs.akkoma.dev/main/backend/configuration/howto_mediaproxy/ +# For details, see https://docs.akkoma.dev/stable/configuration/howto_mediaproxy/ # # 1. Create a directory as shown below for the CacheRoot and make sure # the Apache user can write to it. diff --git a/lib/mix/tasks/pleroma/app.ex b/lib/mix/tasks/pleroma/app.ex index 0bf7ffabcb..2ec06db8c3 100644 --- a/lib/mix/tasks/pleroma/app.ex +++ b/lib/mix/tasks/pleroma/app.ex @@ -3,7 +3,7 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Mix.Tasks.Pleroma.App do - @moduledoc File.read!("docs/administration/CLI_tasks/oauth_app.md") + @moduledoc File.read!("docs/docs/administration/CLI_tasks/oauth_app.md") use Mix.Task import Mix.Pleroma diff --git a/lib/mix/tasks/pleroma/config.ex b/lib/mix/tasks/pleroma/config.ex index 05ff8076fe..c259a6cbd2 100644 --- a/lib/mix/tasks/pleroma/config.ex +++ b/lib/mix/tasks/pleroma/config.ex @@ -12,7 +12,7 @@ defmodule Mix.Tasks.Pleroma.Config do alias Pleroma.Repo @shortdoc "Manages the location of the config" - @moduledoc File.read!("docs/administration/CLI_tasks/config.md") + @moduledoc File.read!("docs/docs/administration/CLI_tasks/config.md") def run(["migrate_to_db"]) do check_configdb(fn -> diff --git a/lib/mix/tasks/pleroma/database.ex b/lib/mix/tasks/pleroma/database.ex index a973beaa90..99897e83ee 100644 --- a/lib/mix/tasks/pleroma/database.ex +++ b/lib/mix/tasks/pleroma/database.ex @@ -18,7 +18,7 @@ defmodule Mix.Tasks.Pleroma.Database do use Mix.Task @shortdoc "A collection of database related tasks" - @moduledoc File.read!("docs/administration/CLI_tasks/database.md") + @moduledoc File.read!("docs/docs/administration/CLI_tasks/database.md") def run(["remove_embedded_objects" | args]) do {options, [], []} = diff --git a/lib/mix/tasks/pleroma/digest.ex b/lib/mix/tasks/pleroma/digest.ex index f34fc839e6..0c14694323 100644 --- a/lib/mix/tasks/pleroma/digest.ex +++ b/lib/mix/tasks/pleroma/digest.ex @@ -7,7 +7,7 @@ defmodule Mix.Tasks.Pleroma.Digest do import Mix.Pleroma @shortdoc "Manages digest emails" - @moduledoc File.read!("docs/administration/CLI_tasks/digest.md") + @moduledoc File.read!("docs/docs/administration/CLI_tasks/digest.md") def run(["test", nickname | opts]) do Mix.Pleroma.start_pleroma() diff --git a/lib/mix/tasks/pleroma/email.ex b/lib/mix/tasks/pleroma/email.ex index 4ce8c9b05f..d257cebe96 100644 --- a/lib/mix/tasks/pleroma/email.ex +++ b/lib/mix/tasks/pleroma/email.ex @@ -7,7 +7,7 @@ defmodule Mix.Tasks.Pleroma.Email do import Mix.Pleroma @shortdoc "Email administrative tasks" - @moduledoc File.read!("docs/administration/CLI_tasks/email.md") + @moduledoc File.read!("docs/docs/administration/CLI_tasks/email.md") def run(["test" | args]) do start_pleroma() diff --git a/lib/mix/tasks/pleroma/emoji.ex b/lib/mix/tasks/pleroma/emoji.ex index 9ad4a7467f..5dedf276ab 100644 --- a/lib/mix/tasks/pleroma/emoji.ex +++ b/lib/mix/tasks/pleroma/emoji.ex @@ -7,7 +7,7 @@ defmodule Mix.Tasks.Pleroma.Emoji do import Mix.Pleroma @shortdoc "Manages emoji packs" - @moduledoc File.read!("docs/administration/CLI_tasks/emoji.md") + @moduledoc File.read!("docs/docs/administration/CLI_tasks/emoji.md") def run(["ls-packs" | args]) do start_pleroma() diff --git a/lib/mix/tasks/pleroma/frontend.ex b/lib/mix/tasks/pleroma/frontend.ex index 8334e0049a..d265bfa3a9 100644 --- a/lib/mix/tasks/pleroma/frontend.ex +++ b/lib/mix/tasks/pleroma/frontend.ex @@ -9,7 +9,7 @@ defmodule Mix.Tasks.Pleroma.Frontend do @shortdoc "Manages bundled Pleroma frontends" - @moduledoc File.read!("docs/administration/CLI_tasks/frontend.md") + @moduledoc File.read!("docs/docs/administration/CLI_tasks/frontend.md") def run(["install", "none" | _args]) do shell_info("Skipping frontend installation because none was requested") diff --git a/lib/mix/tasks/pleroma/instance.ex b/lib/mix/tasks/pleroma/instance.ex index 03f72c27a5..8954b3b7cf 100644 --- a/lib/mix/tasks/pleroma/instance.ex +++ b/lib/mix/tasks/pleroma/instance.ex @@ -9,7 +9,7 @@ defmodule Mix.Tasks.Pleroma.Instance do alias Pleroma.Config @shortdoc "Manages Pleroma instance" - @moduledoc File.read!("docs/administration/CLI_tasks/instance.md") + @moduledoc File.read!("docs/docs/administration/CLI_tasks/instance.md") def run(["gen" | rest]) do {options, [], []} = diff --git a/lib/mix/tasks/pleroma/relay.ex b/lib/mix/tasks/pleroma/relay.ex index 01e6b4279b..c32fcdc33b 100644 --- a/lib/mix/tasks/pleroma/relay.ex +++ b/lib/mix/tasks/pleroma/relay.ex @@ -8,7 +8,7 @@ defmodule Mix.Tasks.Pleroma.Relay do alias Pleroma.Web.ActivityPub.Relay @shortdoc "Manages remote relays" - @moduledoc File.read!("docs/administration/CLI_tasks/relay.md") + @moduledoc File.read!("docs/docs/administration/CLI_tasks/relay.md") def run(["follow", target]) do start_pleroma() diff --git a/lib/mix/tasks/pleroma/uploads.ex b/lib/mix/tasks/pleroma/uploads.ex index 333e9aa8e3..e8c69dddc3 100644 --- a/lib/mix/tasks/pleroma/uploads.ex +++ b/lib/mix/tasks/pleroma/uploads.ex @@ -12,7 +12,7 @@ defmodule Mix.Tasks.Pleroma.Uploads do @log_every 50 @shortdoc "Migrates uploads from local to remote storage" - @moduledoc File.read!("docs/administration/CLI_tasks/uploads.md") + @moduledoc File.read!("docs/docs/administration/CLI_tasks/uploads.md") def run(["migrate_local", target_uploader | args]) do delete? = Enum.member?(args, "--delete") diff --git a/lib/mix/tasks/pleroma/user.ex b/lib/mix/tasks/pleroma/user.ex index 6c26e0e959..f8c6d57812 100644 --- a/lib/mix/tasks/pleroma/user.ex +++ b/lib/mix/tasks/pleroma/user.ex @@ -13,7 +13,7 @@ defmodule Mix.Tasks.Pleroma.User do alias Pleroma.Web.ActivityPub.Pipeline @shortdoc "Manages Pleroma users" - @moduledoc File.read!("docs/administration/CLI_tasks/user.md") + @moduledoc File.read!("docs/docs/administration/CLI_tasks/user.md") def run(["new", nickname, email | rest]) do {options, [], []} = diff --git a/lib/pleroma/docs/json.ex b/lib/pleroma/docs/json.ex index f22432ea48..a94c6a4724 100644 --- a/lib/pleroma/docs/json.ex +++ b/lib/pleroma/docs/json.ex @@ -25,7 +25,7 @@ defmodule Pleroma.Docs.JSON do @spec process(keyword()) :: {:ok, String.t()} def process(descriptions) do - with path <- "docs/generated_config.json", + with path <- "docs/docs/generated_config.json", {:ok, file} <- File.open(path, [:write, :utf8]), formatted_descriptions <- Pleroma.Docs.Generator.convert_to_strings(descriptions), diff --git a/lib/pleroma/docs/markdown.ex b/lib/pleroma/docs/markdown.ex index 7e54e9d582..0a7b826ab3 100644 --- a/lib/pleroma/docs/markdown.ex +++ b/lib/pleroma/docs/markdown.ex @@ -7,7 +7,7 @@ defmodule Pleroma.Docs.Markdown do @spec process(keyword()) :: {:ok, String.t()} def process(descriptions) do - config_path = "docs/generated_config.md" + config_path = "docs/docs/generated_config.md" {:ok, file} = File.open(config_path, [:utf8, :write]) IO.write(file, "# Generated configuration\n") IO.write(file, "Date of generation: #{Date.utc_today()}\n\n") diff --git a/priv/static/READ_THIS_BEFORE_TOUCHING_FILES_HERE b/priv/static/READ_THIS_BEFORE_TOUCHING_FILES_HERE index 5d94e5ec0d..2f223927d6 100644 --- a/priv/static/READ_THIS_BEFORE_TOUCHING_FILES_HERE +++ b/priv/static/READ_THIS_BEFORE_TOUCHING_FILES_HERE @@ -5,4 +5,4 @@ modifying anything here. Please use the instance static directory instead, it has the same directory structure and files placed there will override files placed here. See -https://docs.akkoma.dev/main/backend/configuration/static_dir/ for more info. +https://docs.akkoma.dev/stable/configuration/static_dir/ for more info. diff --git a/priv/static/index.html b/priv/static/index.html index dd507f6eab..4a304f5760 100644 --- a/priv/static/index.html +++ b/priv/static/index.html @@ -7,6 +7,6 @@

Welcome to Akkoma!

If you're seeing this page, your server works!

In order to get a frontend to show here, you'll need to set up :pleroma, :frontends, primary and install your frontend of choice

- Documentation + Documentation