59740a3b5dc6ac2e446a4ee126e9d91f5c3551c5
Deploy Instructions
Setup environment
- Install Java 11 JDK (And add an alias to your
.bashrc)
alias java11='/usr/lib/jvm/jre-11/bin/java'
- Create deployment directory
/app/depl/clock-api - Create
/app/depl/clock-api/launch.sh(Don't forget tochmod +x)
/usr/lib/jvm/jre-11/bin/java -Xms512M -Xmx1024M -Dserver.port=41566 -jar clock_api.jar
- Run a test
./launch.shto see if it runs - Create
/etc/systemd/system/clock-api.service
[Unit]
Description=iOS Alarm Clock API Server
[Service]
WorkingDirectory=/app/depl/clock-api/
ExecStart=/bin/bash launch.sh
User=jvmapps
Type=simple
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
- If you haven't set up the execution user yet:
groupadd -r appmgr
sudo useradd -r -s /bin/false -g appmgr jvmapps
id jvmapps
chown -R jvmapps:appmgr /app/depl/clock-api
- Run
deploy.shin your local machine (Don't forget to changeHOST) - Add aliases to your
.bashrc
alias clock-restart='sctl restart clock-api'
alias clock-log-all='jctl -u clock-api --output cat'
alias clock-log='clock-log-all -f'
- Add Nginx mapping in
/etc/nginx/nginx.conf(Change the host names to your host name)
# Clock API HTTP
server
{
listen 80;
listen [::]:80;
server_name alarm-clock-api.hydev.org;
location ^~ /
{
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://alarm-clock-api.hydev.org:41566/;
proxy_redirect off;
}
}
- Reload Nginx
systemctl restart nginx - Get HTTPS
certbot - Clean up the indentation in
/etc/nginx/nginx.confbecausecertbotalways makes a mess ;-;
The final result should look something like:
# Clock API HTTP Redirect to HTTPS
server
{
listen 80;
listen [::]:80;
server_name alarm-clock-api.hydev.org;
return 301 https://$host$request_uri;
}
# Clock API HTTPS
server
{
server_name alarm-clock-api.hydev.org;
location ^~ /
{
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://alarm-clock-api.hydev.org:41566/;
proxy_redirect off;
}
listen [::]:443 ssl; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/alarm-clock-api.hydev.org/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/alarm-clock-api.hydev.org/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
- Enable auto start
systemctl enable clock-api
Node
GET /register
| Name | Type | In | Description |
|---|---|---|---|
username |
string |
header |
User's name, should match the regex /^[a-z0-9_-]{3,16}$/. |
password |
string |
header |
Only password's md5 will be save. |
Response
| Scenario | Http Status | Type | Value |
|---|---|---|---|
| Success | 200 OK |
string |
User's uuid |
| Failure | 406 NOT ACCEPTABLE |
json array |
JSON Array of Error Code |
Error Code
| Code | Description |
|---|---|
A0101 |
username is null. |
A0102 |
password is null |
A0111 |
username not match the regex. |
A0112 |
password not match the regex. |
Description
Languages
Kotlin
78.8%
Java
20.4%
Shell
0.8%