Merge: A few commits to simplify the configuration

A few commits to make it easier to run your own instance.
This commit is contained in:
Tom Hacohen 2018-02-20 11:54:06 +00:00 committed by GitHub
commit f694f46fb4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 54 additions and 6 deletions

2
.gitignore vendored
View File

@ -4,6 +4,8 @@ Session.vim
/.venv /.venv
/.coverage /.coverage
/htmlcov /htmlcov
/secret.txt
/static
__pycache__ __pycache__
.*.swp .*.swp

View File

@ -17,8 +17,20 @@ source .venv/bin/activate
pip install -r requirements.txt pip install -r requirements.txt
``` ```
Set the django ```SECRET_KEY``` and ```ALLOWED_HOSTS``` in [the settings file](etesync_server/settings.py). Edit the [settings file](etesync_server/settings.py). Please refer to the
For more information on these please refer to the [django deployment checklist](https://docs.djangoproject.com/en/1.10/howto/deployment/checklist/). [Django deployment
checklist](https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/)
for full instructions on how to configure a Django app for production. Some
particular settings that should be edited are:
* [`ALLOWED_HOSTS`](https://docs.djangoproject.com/en/1.11/ref/settings/#std:setting-ALLOWED_HOSTS)
-- this is the list of host/domain names or addresses on which the app
will be served
* [`DEBUG`](https://docs.djangoproject.com/en/1.11/ref/settings/#debug)
-- handy for debugging, set to `False` for production
* [`SECRET_KEY`](https://docs.djangoproject.com/en/1.11/ref/settings/#std:setting-SECRET_KEY)
-- an ephemeral secret used for various cryptographic signing and token
generation purposes. See below for how default configuration of
`SECRET_KEY` works for this project.
Now you can initialise our django app Now you can initialise our django app
@ -50,6 +62,26 @@ That's it!
Now all that's left is to open the EteSync app, add an account, and set your custom server address under the "advance" section. Now all that's left is to open the EteSync app, add an account, and set your custom server address under the "advance" section.
# `SECRET_KEY` and `secret.txt`
The default configuration creates a file “`secret.txt`” in the projects
base directory, which is used as the value of the Django `SECRET_KEY`
setting. You can revoke this key by deleting the `secret.txt` file and the
next time the app is run, a new one will be generated. Make sure you keep
the `secret.txt` file secret (dont accidentally commit it to version
control, exclude it from your backups, etc.). If you want to change to a
more secure system for storing secrets, edit `etesync_server/settings.py`
and implement your own method for setting `SECRET_KEY` (remove the line
where it uses the `get_secret_from_file` function). Read the Django docs
for more information about the `SECRET_KEY` and its uses.
# Updating
Inside the virtualenv, run `pip install -U -r requirements.txt` to update
dependencies to latest compatible versions of Django and
djangorestframework (it will only update to latest patch level which should
be API-compatible).
# Supporting EteSync # Supporting EteSync
Please consider registering an account even if you self-host in order to support the development of EteSync, or help by spreading the word. Please consider registering an account even if you self-host in order to support the development of EteSync, or help by spreading the word.

View File

@ -11,6 +11,7 @@ https://docs.djangoproject.com/en/1.10/ref/settings/
""" """
import os import os
from .utils import get_secret_from_file
# Build paths inside the project like this: os.path.join(BASE_DIR, ...) # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
@ -20,7 +21,9 @@ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# See https://docs.djangoproject.com/en/1.10/howto/deployment/checklist/ # See https://docs.djangoproject.com/en/1.10/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret! # SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '' # See secret.py for how this is generated; uses a file 'secret.txt' in the root
# directory
SECRET_KEY = get_secret_from_file(os.path.join(BASE_DIR, "secret.txt"))
# SECURITY WARNING: don't run with debug turned on in production! # SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False DEBUG = False

11
etesync_server/utils.py Normal file
View File

@ -0,0 +1,11 @@
from django.core.management import utils
def get_secret_from_file(path):
try:
with open(path, "r") as f:
return f.read().strip()
except EnvironmentError:
with open(path, "w") as f:
secret_key = utils.get_random_secret_key()
f.write(secret_key)
return secret_key

View File

@ -1,5 +1,5 @@
Django==1.11.7 Django>=1.11,<1.11.999
djangorestframework==3.7.1 djangorestframework>=3.7,<3.7.999
drf-nested-routers==0.90.0 drf-nested-routers==0.90.0
pytz==2017.3 pytz
git+git://github.com/etesync/journal-manager@v0.4.1 git+git://github.com/etesync/journal-manager@v0.4.1