From eca9a7ea1362b14cc3f7fdd63da5cec186d55e3d Mon Sep 17 00:00:00 2001
From: Skid <skid@tuto-craft.com>
Date: Sun, 15 Jul 2018 01:26:23 +0200
Subject: [PATCH] Update setup.en.md

---
 docs/setup.en.md | 103 +++++++++++++++++++++++++++++++++++------------
 1 file changed, 78 insertions(+), 25 deletions(-)

diff --git a/docs/setup.en.md b/docs/setup.en.md
index b5bafcf802..45038b87ac 100644
--- a/docs/setup.en.md
+++ b/docs/setup.en.md
@@ -8,18 +8,13 @@ This guide describes how to install and setup Misskey.
 
 ----------------------------------------------------------------
 
-*1.* reCAPTCHA tokens
+*1.* Create Misskey user
 ----------------------------------------------------------------
-Misskey requires reCAPTCHA tokens.
-Please visit https://www.google.com/recaptcha/intro/ and generate keys.
+Running misskey on root is not a good idea so we create a user for that.
+In debian for exemple :
 
-*(optional)* Generating VAPID keys
-----------------------------------------------------------------
-If you want to enable ServiceWroker, you need to generate VAPID keys:
-
-``` shell
-npm install web-push -g
-web-push generate-vapid-keys
+``` 
+adduser --disabled-password --disabled-login misskey
 ```
 
 *2.* Install dependencies
@@ -28,25 +23,53 @@ Please install and setup these softwares:
 
 #### Dependencies :package:
 * *Node.js* and *npm*
-* **[MongoDB](https://www.mongodb.com/)**
+* **[MongoDB](https://www.mongodb.com/)** >= 3.6
 * **[Redis](https://redis.io/)**
 * **[ImageMagick](http://www.imagemagick.org/script/index.php)** >= 7.0
 
 ##### Optional
 * [Elasticsearch](https://www.elastic.co/) - used to provide searching feature instead of MongoDB
 
-*3.* Install Misskey
-----------------------------------------------------------------
-1. `git clone -b master git://github.com/syuilo/misskey.git`
-2. `cd misskey`
-3. `npm install`
 
-*4.* Make configuration file
+*3.* Setup Mongodb Database
 ----------------------------------------------------------------
-1. Copy the `.config/example.yml` and rename it to `default.yml`.
+In root :
+1. `mongo` Go to the mongo shell
+2. `use misskey` Use the misskey database
+3. `db.users.save( {dummy:"dummy"} )` Write dummy data to initialize the db.
+4. `db.createUser( { user: "misskey", pwd: "<password>", roles: [ { role: "readWrite", db: "misskey" } ] } )` Create the misskey user.
+5. `exit` You're done !
+
+*4.* Install Misskey
+----------------------------------------------------------------
+1. `su - misskey` Connect to misskey user.
+2. `git clone -b master git://github.com/syuilo/misskey.git` Clone the misskey repo from master branch.
+3. `cd misskey` Navigate to misskey directory
+4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Checkout to the [latest release](https://github.com/syuilo/misskey/releases/latest)
+5. `npm install` Install misskey dependencies.
+
+*5.* reCAPTCHA tokens
+----------------------------------------------------------------
+Misskey requires reCAPTCHA tokens.
+Please visit https://www.google.com/recaptcha/intro/ and generate keys.
+
+*(optional)* Generating VAPID keys
+----------------------------------------------------------------
+If you want to enable ServiceWroker, you need to generate VAPID keys:
+Unless you have set your global node_modules location elsewhere, you need to run this in root.
+
+``` shell
+npm install web-push -g
+web-push generate-vapid-keys
+```
+
+
+*6.* Make configuration file
+----------------------------------------------------------------
+1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`.
 2. Edit it
 
-*5.* Build Misskey
+*7.* Build Misskey
 ----------------------------------------------------------------
 
 Build misskey with the following:
@@ -62,14 +85,44 @@ If you're still encountering errors about some modules, use node-gyp:
 3. `node-gyp build`
 4. `npm run build`
 
-*6.* That is it.
+*8.* That is it.
 ----------------------------------------------------------------
 Well done! Now, you have an environment that run to Misskey.
 
-### Launch
-Just `sudo npm start`. GLHF!
+### Launch normally
+Just `npm start`. GLHF!
+
+### Launch with systemd
+
+1. Create a systemd service here: `/etc/systemd/system/misskey.service`
+2. Edit it, and paste this and save:
+
+```
+[Unit]
+Description=Misskey daemon
+
+[Service]
+Type=simple
+User=misskey
+ExecStart=/usr/bin/npm start
+WorkingDirectory=/home/misskey/misskey
+TimeoutSec=60
+StandardOutput=syslog
+StandardError=syslog
+SyslogIdentifier=misskey
+Restart=always
+
+[Install]
+WantedBy=multi-user.target
+```
+
+3. `systemctl daemon-reload ; systemctl enable misskey` Reload systemd and enable the misskey service.
+4. `systemctl start misskey` Start the misskey service.
+
+You can check if the service is running with `systemctl status misskey`.
 
 ### Way to Update to latest version of your Misskey
-1. `git reset --hard && git pull origin master`
-2. `npm install`
-3. `npm run build`
+1. `git fetch`
+2. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)`
+3. `npm install`
+4. `npm run build`