More docs setup
This commit is contained in:
parent
2142677b01
commit
774e91c8a2
|
@ -0,0 +1,16 @@
|
||||||
|
version: 2
|
||||||
|
|
||||||
|
# Set the version of Python and other tools you might need
|
||||||
|
build:
|
||||||
|
os: ubuntu-22.04
|
||||||
|
tools:
|
||||||
|
python: "3.11"
|
||||||
|
|
||||||
|
# Build documentation in the docs/ directory with Sphinx
|
||||||
|
sphinx:
|
||||||
|
configuration: docs/conf.py
|
||||||
|
|
||||||
|
# Optionally declare the Python requirements required to build your docs
|
||||||
|
python:
|
||||||
|
install:
|
||||||
|
- requirements: docs/requirements.txt
|
|
@ -12,13 +12,40 @@ Prerequisites
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
* SSL support (Takahē *requires* HTTPS)
|
* SSL support (Takahē *requires* HTTPS)
|
||||||
* Something that can run Docker/OCI images ("serverless" platforms are fine!)
|
* Something that can run Docker/OCI images
|
||||||
* A PostgreSQL 14 (or above) database
|
* A PostgreSQL 14 (or above) database
|
||||||
* One of these to store uploaded images and media:
|
* One of these to store uploaded images and media:
|
||||||
* Amazon S3
|
* Amazon S3
|
||||||
* Google Cloud Storage
|
* Google Cloud Storage
|
||||||
* Writable local directory (must be accessible by all running copies!)
|
* Writable local directory (must be accessible by all running copies!)
|
||||||
|
|
||||||
|
Note that ActivityPub is a chatty protocol that has a lot of background
|
||||||
|
activity, so you will need a platform that can run *background tasks*, in
|
||||||
|
order to fetch profiles, retry delivery of posts, and more.
|
||||||
|
|
||||||
|
This means that a "serverless" platform like AWS Lambda or Google Cloud Run is
|
||||||
|
not enough by itself; while you can use these to serve the web pages if you
|
||||||
|
like, you will need to run the Stator runner somewhere else as well.
|
||||||
|
|
||||||
|
The flagship Takahē instance, [takahe.social](https://takahe.social), runs
|
||||||
|
inside of Kubernetes, with one Deployment for the webserver and one for the
|
||||||
|
Stator runner.
|
||||||
|
|
||||||
|
|
||||||
|
What To Run
|
||||||
|
-----------
|
||||||
|
|
||||||
|
You need to run at least two copies of the Docker image:
|
||||||
|
|
||||||
|
* One with no command or arguments specified, which will serve web traffic
|
||||||
|
* One with the arguments (command) ``python manage.py runstator``, which will
|
||||||
|
run the background worker that handles asynchronous communication with other
|
||||||
|
servers.
|
||||||
|
|
||||||
|
Both of these can have as many copies run as needed. Note that the image has
|
||||||
|
required environment variables before it will boot, and this is the only way
|
||||||
|
to configure it - see below.
|
||||||
|
|
||||||
|
|
||||||
Environment Variables
|
Environment Variables
|
||||||
---------------------
|
---------------------
|
||||||
|
@ -76,25 +103,6 @@ be provided from the first boot.
|
||||||
should get them.
|
should get them.
|
||||||
|
|
||||||
|
|
||||||
Setting Up Task Runners
|
|
||||||
-----------------------
|
|
||||||
|
|
||||||
Takahe is designed to not require a continuously-running background worker;
|
|
||||||
instead, you can trigger the "Stator Runner" (our internal task system) either
|
|
||||||
via a periodic admin command or via a periodic hit to a URL (which is useful
|
|
||||||
if you are on "serverless" hosting that does not allow background tasks).
|
|
||||||
|
|
||||||
To use the URL method, configure something to hit
|
|
||||||
``/.stator/runner/?token=ABCDEF`` every 60 seconds. You can do this less often
|
|
||||||
if you don't mind delays in content and profiles being fetched, or more often
|
|
||||||
if you are under increased load. The value of the token should be the same
|
|
||||||
as what you set for ``TAKAHE_STATOR_TOKEN``.
|
|
||||||
|
|
||||||
Alternatively, you can set up ``python manage.py runstator`` to run in the
|
|
||||||
Docker image with the same time interval. We still recommend setting
|
|
||||||
``TAKAHE_STATOR_TOKEN`` in this case so nobody else can trigger it from a URL.
|
|
||||||
|
|
||||||
|
|
||||||
Making An Admin Account
|
Making An Admin Account
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
|
@ -109,6 +117,9 @@ If your email settings have a problem and you don't get the email, don't worry;
|
||||||
fix them and then follow the "reset my password" flow on the login screen, and
|
fix them and then follow the "reset my password" flow on the login screen, and
|
||||||
you'll get another password reset email that you can use.
|
you'll get another password reset email that you can use.
|
||||||
|
|
||||||
|
If you have shell access to the Docker image and would rather use that, you
|
||||||
|
can run ``python3 manage.py createsuperuser`` instead and follow the prompts.
|
||||||
|
|
||||||
|
|
||||||
Adding A Domain
|
Adding A Domain
|
||||||
---------------
|
---------------
|
||||||
|
@ -116,5 +127,5 @@ Adding A Domain
|
||||||
When you login you'll be greeted with the "make an identity" screen, but you
|
When you login you'll be greeted with the "make an identity" screen, but you
|
||||||
won't be able to as you will have no domains yet.
|
won't be able to as you will have no domains yet.
|
||||||
|
|
||||||
You should navigate directly to ``/admin/domains/`` and make one, and then
|
You should select the "Domains" link in the sidebar and create one, and then
|
||||||
you will be able to create an identity.
|
you will be able to make your first identity.
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
sphinx~=5.3.0
|
|
@ -13,3 +13,4 @@ pydantic~=1.10.2
|
||||||
django-htmx~=1.13.0
|
django-htmx~=1.13.0
|
||||||
django-storages[google,boto3]~=1.13.1
|
django-storages[google,boto3]~=1.13.1
|
||||||
whitenoise~=6.2.0
|
whitenoise~=6.2.0
|
||||||
|
sphinx~=5.3.0
|
||||||
|
|
|
@ -8,4 +8,10 @@
|
||||||
<a href="/auth/logout/">
|
<a href="/auth/logout/">
|
||||||
<i class="fa-solid fa-right-from-bracket"></i> Logout
|
<i class="fa-solid fa-right-from-bracket"></i> Logout
|
||||||
</a>
|
</a>
|
||||||
|
{% if request.user.admin %}
|
||||||
|
<h3>Administration</h3>
|
||||||
|
<a href="{% url "admin_domains" %}" {% if section == "domains" %}class="selected"{% endif %}>
|
||||||
|
<i class="fa-solid fa-globe"></i> Domains
|
||||||
|
</a>
|
||||||
|
{% endif %}
|
||||||
</nav>
|
</nav>
|
||||||
|
|
|
@ -9,7 +9,6 @@
|
||||||
<a href="{% url "settings_follows" %}" {% if section == "follows" %}class="selected"{% endif %}>
|
<a href="{% url "settings_follows" %}" {% if section == "follows" %}class="selected"{% endif %}>
|
||||||
<i class="fa-solid fa-arrow-right-arrow-left"></i> Follows
|
<i class="fa-solid fa-arrow-right-arrow-left"></i> Follows
|
||||||
</a>
|
</a>
|
||||||
{% if request.user.admin %}
|
|
||||||
<h3>Account</h3>
|
<h3>Account</h3>
|
||||||
<a href="{% url "settings_security" %}" {% if section == "security" %}class="selected"{% endif %}>
|
<a href="{% url "settings_security" %}" {% if section == "security" %}class="selected"{% endif %}>
|
||||||
<i class="fa-solid fa-key"></i> Login & Security
|
<i class="fa-solid fa-key"></i> Login & Security
|
||||||
|
@ -17,6 +16,7 @@
|
||||||
<a href="/auth/logout/">
|
<a href="/auth/logout/">
|
||||||
<i class="fa-solid fa-right-from-bracket"></i> Logout
|
<i class="fa-solid fa-right-from-bracket"></i> Logout
|
||||||
</a>
|
</a>
|
||||||
|
{% if request.user.admin %}
|
||||||
<h3>Administration</h3>
|
<h3>Administration</h3>
|
||||||
<a href="{% url "admin_basic" %}" {% if section == "basic" %}class="selected"{% endif %}>
|
<a href="{% url "admin_basic" %}" {% if section == "basic" %}class="selected"{% endif %}>
|
||||||
<i class="fa-solid fa-book"></i> Basic
|
<i class="fa-solid fa-book"></i> Basic
|
||||||
|
|
Loading…
Reference in New Issue