{"ok": true, "next": null, "rows": [{"id": "deploying:deploying-fundamentals", "page": "deploying", "ref": "deploying-fundamentals", "title": "Deployment fundamentals", "content": "Datasette can be deployed as a single  datasette  process that listens on a port. Datasette is not designed to be run as root, so that process should listen on a higher port such as port 8000. \n             If you want to serve Datasette on port 80 (the HTTP default port) or port 443 (for HTTPS) you should run it behind a proxy server, such as nginx, Apache or HAProxy. The proxy server can listen on port 80/443 and forward traffic on to Datasette.", "breadcrumbs": "[\"Deploying Datasette\"]", "references": "[]"}, {"id": "deploying:deploying-proxy", "page": "deploying", "ref": "deploying-proxy", "title": "Running Datasette behind a proxy", "content": "You may wish to run Datasette behind an Apache or nginx proxy, using a path within your existing site. \n             You can use the  base_url  configuration setting to tell Datasette to serve traffic with a specific URL prefix. For example, you could run Datasette like this: \n             datasette my-database.db --setting base_url /my-datasette/ -p 8009 \n             This will run Datasette with the following URLs: \n             \n                 \n                     http://127.0.0.1:8009/my-datasette/  - the Datasette homepage \n                 \n                 \n                     http://127.0.0.1:8009/my-datasette/my-database  - the page for the  my-database.db  database \n                 \n                 \n                     http://127.0.0.1:8009/my-datasette/my-database/some_table  - the page for the  some_table  table \n                 \n             \n             You can now set your nginx or Apache server to proxy the  /my-datasette/  path to this Datasette instance.", "breadcrumbs": "[\"Deploying Datasette\"]", "references": "[]"}, {"id": "deploying:deploying-systemd", "page": "deploying", "ref": "deploying-systemd", "title": "Running Datasette using systemd", "content": "You can run Datasette on Ubuntu or Debian systems using  systemd . \n             First, ensure you have Python 3 and  pip  installed. On Ubuntu you can use  sudo apt-get install python3 python3-pip . \n             You can install Datasette into a virtual environment, or you can install it system-wide. To install system-wide, use  sudo pip3 install datasette . \n             Now create a folder for your Datasette databases, for example using  mkdir /home/ubuntu/datasette-root . \n             You can copy a test database into that folder like so: \n             cd /home/ubuntu/datasette-root\ncurl -O https://latest.datasette.io/fixtures.db \n             Create a file at  /etc/systemd/system/datasette.service  with the following contents: \n             [Unit]\nDescription=Datasette\nAfter=network.target\n\n[Service]\nType=simple\nUser=ubuntu\nEnvironment=DATASETTE_SECRET=\nWorkingDirectory=/home/ubuntu/datasette-root\nExecStart=datasette serve . -h 127.0.0.1 -p 8000\nRestart=on-failure\n\n[Install]\nWantedBy=multi-user.target \n             Add a random value for the  DATASETTE_SECRET  - this will be used to sign Datasette cookies such as the CSRF token cookie. You can generate a suitable value like so: \n             python3 -c 'import secrets; print(secrets.token_hex(32))' \n             This configuration will run Datasette against all database files contained in the  /home/ubuntu/datasette-root  directory. If that directory contains a  metadata.yml  (or  .json ) file or a  templates/  or  plugins/  sub-directory those will automatically be loaded by Datasette - see  Configuration directory mode  for details. \n             You can start the Datasette process running using the following: \n             sudo systemctl daemon-reload\nsudo systemctl start datasette.service \n             You will need to restart the Datasette service after making changes to its  metadata.json  configuration or adding a new database file to that directory. You can do that using: \n             sudo systemctl restart datasette.service \n             Once the service has started you can confirm that Datasette is running on port 8000 like so: \n             curl 127.0.0.1:8000/-/versions.json\n# Should output JSON showing the installed version \n             Datasette will not be accessible from outside the server because it is listening on  127.0.0.1 . You can expose it by instead listening on  0.0.0.0 , but a better way is to set up a proxy such as  nginx  - see  Running Datasette behind a proxy .", "breadcrumbs": "[\"Deploying Datasette\"]", "references": "[]"}], "truncated": false}