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 (80%) 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 8fca0b41a..738e7de3e 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 000000000..61b369e51 --- /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 0bac90d73..000000000 --- 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 5efef118f..6a972acbb 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 6724d363d..f41655029 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 131453a12..5c8014f16 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 000000000..bc8719e68 --- /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 69a3d48ee..38ca76003 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 dddb5cea5..9186b011d 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 000000000..e51c1d188 --- /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 000000000..3e538a540 --- /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 000000000..ae39a2776 --- /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 000000000..fcf043f56 --- /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 5a7ae2c7a..a0199d06f 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 c53c49921..8b2ab93e6 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 a590581e3..7a6569ada 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 2bb57bea4..f76096e07 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 e3d1b210e..bad908dca 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 982b22bf3..5c93cdb30 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 80% rename from docs/administration/CLI_tasks/oauth_app.md rename to docs/docs/administration/CLI_tasks/oauth_app.md index f0568491e..8a49b3c09 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 bdd7e8be4..b510382bb 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 7eeedf571..6cb9fd673 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 8585ec76b..40602121c 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 24fdaeab4..0d19b5622 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 7c2cd2a16..6f7ffcd63 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 17da58594..c7df00190 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 077fd9c31..a25120589 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 77b3964cf..213afcf13 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 3c5611309..ebb2c6ab7 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 000000000..b5ceb8a8a --- /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/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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 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 db7e22aee..f9340d5d3 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 05b226aef..f98998fb8 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 f2c9eb3b8..40503db0c 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 51d24a2d7..ec829c903 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 ff60bd27e..be735a998 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 a8a5f157a..4649b63bf 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 d84a08b3c..148564d9a 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 df396e4f4..c00a32e34 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 abc0abb51..c7e8cf0c0 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 c9f123532..65bbf15e1 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 0bf7ffabc..2ec06db8c 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 05ff8076f..c259a6cbd 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 a973beaa9..99897e83e 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 f34fc839e..0c1469432 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 4ce8c9b05..d257cebe9 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 9ad4a7467..5dedf276a 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 8334e0049..d265bfa3a 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 03f72c27a..8954b3b7c 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 01e6b4279..c32fcdc33 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 333e9aa8e..e8c69dddc 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 6c26e0e95..f8c6d5781 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 f22432ea4..a94c6a472 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 7e54e9d58..0a7b826ab 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 5d94e5ec0..2f223927d 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 dd507f6ea..4a304f576 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