No description
Find a file
Christian Lawson-Perfect f17e3dc283 editor think-file view adds the time as a query parameter to the redirect
to force the browser not to use a cached version
2026-01-29 10:50:07 +00:00
installation
thinks editor think-file view adds the time as a query parameter to the redirect 2026-01-29 10:50:07 +00:00
thinkserver
.gitignore
COPYING
gunicorn.conf.py.dist
manage.py
pyproject.toml pyproject.toml and uv.lock 2025-11-28 09:04:03 +00:00
README.md
requirements.txt
uv.lock pyproject.toml and uv.lock 2025-11-28 09:04:03 +00:00

Thinkserver

This is licensed under the terms of the GNU Affero General Public License, v3.

Installation

These instructions are deliberately sketchy. I'm releasing this code in case someone else wants to use it but I'm not interested in it being a collaborative project or taking support or feature requests.

Everything is provided as-is.

This is a Django app, with some of the front-end interface written in Elm.

These instructions assume that the server will be installed at /srv/think.somethingorotherwhatever.com.

Run

pip install requirements.txt

Copy thinkserver/settings.py.dist to thinkserver/settings.py and fill in the settings at the end of the file.

Generate a secret string and put it in /srv/think.somethingorotherwhatever.com/secret_key.txt.

Run

python manage.py migrate
python manage.py collectstatic --noinput

Copy gunicorn.conf.py.dist to gunicorn.conf.py.

Copy installation/think_something.service and installation/think_something.socket to /etc/systemd/system.

Copy installation/thinkserver.nginx.conf to /etc/nginx/sites-available and then symbolic link that to /etc/nginx/sites-enabled.

Use Certbot to make a wildcard certificate for *.think.somethingorotherwhatever.com. How exactly this works depends on your hosting provider.