mirror of
https://github.com/YunoHost-Apps/diaspora_ynh.git
synced 2024-09-03 18:26:13 +02:00
Apply last example_ynh
This commit is contained in:
parent
f620f2571e
commit
077e18d742
22 changed files with 858 additions and 1741 deletions
|
@ -1,9 +1,8 @@
|
||||||
;; Test complet
|
;; Test complet
|
||||||
; Manifest
|
; Manifest
|
||||||
domain="domain.tld" (DOMAIN)
|
domain="domain.tld"
|
||||||
path="/path" (PATH)
|
admin="john"
|
||||||
admin="john" (USER)
|
password="1Strong-Password"
|
||||||
admin_password="pass"
|
|
||||||
; Checks
|
; Checks
|
||||||
pkg_linter=1
|
pkg_linter=1
|
||||||
setup_sub_dir=0 # not supported upstream
|
setup_sub_dir=0 # not supported upstream
|
||||||
|
@ -16,10 +15,9 @@
|
||||||
port_already_use=0
|
port_already_use=0
|
||||||
change_url=0 # not supported upstream
|
change_url=0 # not supported upstream
|
||||||
;;; Options
|
;;; Options
|
||||||
Email=
|
Email=
|
||||||
Notification=none
|
Notification=none
|
||||||
;;; Upgrade options
|
;;; Upgrade options
|
||||||
; commit=CommitHash
|
; commit=CommitHash
|
||||||
name=Name and date of the commit.
|
name=Name and date of the commit.
|
||||||
manifest_arg=domain=DOMAIN&path=PATH&admin=USER&language=fr&is_public=1&password=pass&port=666&
|
manifest_arg=domain=DOMAIN&path=PATH&admin=USER&language=fr&is_public=1&password=pass&port=666&
|
||||||
|
|
||||||
|
|
7
conf/app.src
Normal file
7
conf/app.src
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
SOURCE_URL=https://github.com/diaspora/diaspora/archive/refs/tags/v0.7.17.0.tar.gz
|
||||||
|
SOURCE_SUM=d54f339c1f8da70a87e11240d07dab2645a5ffefa6dc2daf0cf893f84aef0564
|
||||||
|
SOURCE_SUM_PRG=sha256sum
|
||||||
|
SOURCE_FORMAT=tar.gz
|
||||||
|
SOURCE_IN_SUBDIR=true
|
||||||
|
SOURCE_FILENAME=
|
||||||
|
SOURCE_EXTRACT=true
|
|
@ -2,8 +2,8 @@ postgresql: &postgresql
|
||||||
adapter: postgresql
|
adapter: postgresql
|
||||||
host: "localhost"
|
host: "localhost"
|
||||||
port: 5432
|
port: 5432
|
||||||
username: "{{ app }}"
|
username: "__DB_USER__"
|
||||||
password: "{{ db_pass }}"
|
password: "__DB_PWD__"
|
||||||
encoding: unicode
|
encoding: unicode
|
||||||
|
|
||||||
mysql: &mysql
|
mysql: &mysql
|
||||||
|
@ -42,7 +42,7 @@ development:
|
||||||
database: diaspora_development
|
database: diaspora_development
|
||||||
production:
|
production:
|
||||||
<<: *combined
|
<<: *combined
|
||||||
database: {{ app }}
|
database: __DB_NAME__
|
||||||
test:
|
test:
|
||||||
<<: *combined
|
<<: *combined
|
||||||
database: diaspora_test
|
database: diaspora_test
|
||||||
|
|
|
@ -36,7 +36,7 @@ configuration: ## Section
|
||||||
## However changing http to https is okay and has no consequences.
|
## However changing http to https is okay and has no consequences.
|
||||||
## If you do change the URL, you will have to start again as the URL
|
## If you do change the URL, you will have to start again as the URL
|
||||||
## will be hardcoded into the database.
|
## will be hardcoded into the database.
|
||||||
url: "https://{{ domain }}"
|
url: "https://__DOMAIN__"
|
||||||
|
|
||||||
## Set the bundle of certificate authorities (CA) certificates.
|
## Set the bundle of certificate authorities (CA) certificates.
|
||||||
## This is specific to your operating system.
|
## This is specific to your operating system.
|
||||||
|
@ -176,10 +176,10 @@ configuration: ## Section
|
||||||
#listen: 'unix:tmp/diaspora.sock'
|
#listen: 'unix:tmp/diaspora.sock'
|
||||||
#listen: 'unix:/run/diaspora/diaspora.sock'
|
#listen: 'unix:/run/diaspora/diaspora.sock'
|
||||||
#listen: '127.0.0.1:3000'
|
#listen: '127.0.0.1:3000'
|
||||||
listen: unix:/run/{{ app }}/diaspora.sock
|
listen: unix:/run/__APP__/diaspora.sock
|
||||||
|
|
||||||
## Set the path for the PID file of the unicorn master process (default=tmp/pids/web.pid)
|
## Set the path for the PID file of the unicorn master process (default=tmp/pids/web.pid)
|
||||||
pid: '/run/{{ app }}/diaspora.pid'
|
pid: '/run/__APP__/diaspora.pid'
|
||||||
|
|
||||||
## Rails environment (default='development').
|
## Rails environment (default='development').
|
||||||
## The environment in which the server should be started by default.
|
## The environment in which the server should be started by default.
|
||||||
|
@ -553,7 +553,7 @@ configuration: ## Section
|
||||||
enable: true
|
enable: true
|
||||||
|
|
||||||
## Sender address used in mail sent by Diaspora.
|
## Sender address used in mail sent by Diaspora.
|
||||||
sender_address: 'no-reply@{{ domain }}'
|
sender_address: 'no-reply@__DOMAIN__'
|
||||||
|
|
||||||
## This selects which mailer should be used. Use 'smtp' for a smtp
|
## This selects which mailer should be used. Use 'smtp' for a smtp
|
||||||
## connection or 'sendmail' to use the sendmail binary.
|
## connection or 'sendmail' to use the sendmail binary.
|
||||||
|
@ -606,10 +606,10 @@ configuration: ## Section
|
||||||
## This doesn't make the user an admin but is used when a generic
|
## This doesn't make the user an admin but is used when a generic
|
||||||
## admin contact is needed, much like the postmaster role in mail
|
## admin contact is needed, much like the postmaster role in mail
|
||||||
## systems. Set only the username, NOT the full ID.
|
## systems. Set only the username, NOT the full ID.
|
||||||
account: "{{ admin }}"
|
account: "__ADMIN__"
|
||||||
|
|
||||||
## E-mail address to contact the administrator.
|
## E-mail address to contact the administrator.
|
||||||
podmin_email: '{{ admin_email }}'
|
podmin_email: '__ADMIN_MAIL__'
|
||||||
|
|
||||||
## Settings related to relays
|
## Settings related to relays
|
||||||
relay: ## Section
|
relay: ## Section
|
||||||
|
|
|
@ -3,29 +3,32 @@ Description=Diaspora social network (sidekiq - instance __APP__)
|
||||||
PartOf=__APP__.target
|
PartOf=__APP__.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
|
Type=simple
|
||||||
User=__APP__
|
User=__APP__
|
||||||
Environment=RAILS_ENV=production
|
WorkingDirectory=__FINALPATH__/live
|
||||||
WorkingDirectory=__FINALPATH__/diaspora
|
Environment="__LD_PRELOAD__"
|
||||||
ExecStart=/bin/bash -lc "bin/bundle exec sidekiq"
|
Environment="RAILS_ENV=production"
|
||||||
|
Environment="__YNH_RUBY_LOAD_PATH__"
|
||||||
|
ExecStart=__FINAL_PATH__/live/bin/bundle exec sidekiq
|
||||||
Restart=always
|
Restart=always
|
||||||
|
|
||||||
# Sandboxing options to harden security
|
# Sandboxing options to harden security
|
||||||
# Depending on specificities of your service/app, you may need to tweak these
|
# Depending on specificities of your service/app, you may need to tweak these
|
||||||
# .. but this should be a good baseline
|
# .. but this should be a good baseline
|
||||||
# Details for these options: https://www.freedesktop.org/software/systemd/man/systemd.exec.html
|
# Details for these options: https://www.freedesktop.org/software/systemd/man/systemd.exec.html
|
||||||
NoNewPrivileges=yes
|
NoNewPrivileges=no
|
||||||
PrivateTmp=yes
|
PrivateTmp=yes
|
||||||
PrivateDevices=yes
|
#PrivateDevices=yes
|
||||||
RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6
|
#RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 AF_NETLINK
|
||||||
RestrictNamespaces=yes
|
#RestrictNamespaces=yes
|
||||||
RestrictRealtime=yes
|
#RestrictRealtime=yes
|
||||||
DevicePolicy=closed
|
DevicePolicy=closed
|
||||||
ProtectSystem=full
|
ProtectSystem=full
|
||||||
ProtectControlGroups=yes
|
ProtectControlGroups=yes
|
||||||
ProtectKernelModules=yes
|
#ProtectKernelModules=yes
|
||||||
ProtectKernelTunables=yes
|
#ProtectKernelTunables=yes
|
||||||
LockPersonality=yes
|
#LockPersonality=yes
|
||||||
SystemCallFilter=~@clock @debug @module @mount @obsolete @reboot @setuid @swap
|
#SystemCallFilter=~@clock @debug @module @mount @obsolete @reboot @setuid @swap
|
||||||
|
|
||||||
# Denying access to capabilities that should not be relevant for webapps
|
# Denying access to capabilities that should not be relevant for webapps
|
||||||
# Doc: https://man7.org/linux/man-pages/man7/capabilities.7.html
|
# Doc: https://man7.org/linux/man-pages/man7/capabilities.7.html
|
||||||
|
|
|
@ -3,11 +3,14 @@ Description=Diaspora social network (unicorn - instance __APP__)
|
||||||
PartOf=__APP__.target
|
PartOf=__APP__.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
|
Type=simple
|
||||||
User=__APP__
|
User=__APP__
|
||||||
Environment=RAILS_ENV=production
|
WorkingDirectory=__FINALPATH__/live
|
||||||
WorkingDirectory=__FINALPATH__/diaspora
|
Environment="__LD_PRELOAD__"
|
||||||
|
Environment="RAILS_ENV=production"
|
||||||
|
Environment="__YNH_RUBY_LOAD_PATH__"
|
||||||
PIDFile=/run/__APP__/diaspora.pid
|
PIDFile=/run/__APP__/diaspora.pid
|
||||||
ExecStart=/bin/bash -lc "bin/bundle exec unicorn -c config/unicorn.rb -E production"
|
ExecStart=__FINAL_PATH__/live/bin/bundle exec unicorn -c config/unicorn.rb -E production
|
||||||
ExecReload=/bin/kill -USR2 $MAINPID
|
ExecReload=/bin/kill -USR2 $MAINPID
|
||||||
Restart=always
|
Restart=always
|
||||||
|
|
||||||
|
@ -18,7 +21,7 @@ Restart=always
|
||||||
NoNewPrivileges=yes
|
NoNewPrivileges=yes
|
||||||
PrivateTmp=yes
|
PrivateTmp=yes
|
||||||
PrivateDevices=yes
|
PrivateDevices=yes
|
||||||
RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6
|
RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 AF_NETLINK
|
||||||
RestrictNamespaces=yes
|
RestrictNamespaces=yes
|
||||||
RestrictRealtime=yes
|
RestrictRealtime=yes
|
||||||
DevicePolicy=closed
|
DevicePolicy=closed
|
||||||
|
@ -41,6 +44,5 @@ CapabilityBoundingSet=~CAP_MAC_ADMIN CAP_MAC_OVERRIDE
|
||||||
CapabilityBoundingSet=~CAP_NET_ADMIN CAP_NET_BROADCAST CAP_NET_RAW
|
CapabilityBoundingSet=~CAP_NET_ADMIN CAP_NET_BROADCAST CAP_NET_RAW
|
||||||
CapabilityBoundingSet=~CAP_SYS_ADMIN CAP_SYS_PTRACE CAP_SYSLOG
|
CapabilityBoundingSet=~CAP_SYS_ADMIN CAP_SYS_PTRACE CAP_SYSLOG
|
||||||
|
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=__APP__.target
|
WantedBy=__APP__.target
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,7 +1,8 @@
|
||||||
# Proxy if requested file not found
|
#sub_path_only rewrite ^__PATH__$ __PATH__/ permanent;
|
||||||
location / {
|
location __PATH__/ {
|
||||||
|
|
||||||
root __FINALPATH__/diaspora/public;
|
# Path to source
|
||||||
|
alias __FINALPATH__/live/public/ ;
|
||||||
|
|
||||||
# Configure maximum picture size
|
# Configure maximum picture size
|
||||||
# Note that Diaspora has a client side check set at 4M
|
# Note that Diaspora has a client side check set at 4M
|
||||||
|
@ -11,12 +12,12 @@ location / {
|
||||||
# Proxy if requested file not found
|
# Proxy if requested file not found
|
||||||
try_files $uri @diaspora;
|
try_files $uri @diaspora;
|
||||||
|
|
||||||
location /assets/ {
|
location __PATH__/assets/ {
|
||||||
expires max;
|
expires max;
|
||||||
more_set_headers 'Cache-Control: public';
|
more_set_headers 'Cache-Control: public';
|
||||||
}
|
}
|
||||||
|
|
||||||
# Include SSOWAT user panel.
|
# Include SSOWAT user panel.
|
||||||
include conf.d/yunohost_panel.conf.inc;
|
include conf.d/yunohost_panel.conf.inc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,132 +0,0 @@
|
||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
||||||
|
|
||||||
mQINBFglzSYBEADfGIe+NZMt2ymkKz6QvgG7Kwu54s5E/rikRNRKviysO7O3NWC8
|
|
||||||
P6FQ80kf4s1OhMF+//xnQTXiqFyjCFqftbEM2ApK9YHTUoVFF8I6Ed3uRxP9H3fO
|
|
||||||
dkn3nkvWjSUNo35DkBpGtV6XcMRqHbjGWtjahfrYuqa4oh4ZbY3i3kxUIWTKar+U
|
|
||||||
k7FEigw2znfRjgDT1aX9gLfq2z7GzBwO73HcX4oDJ2Q+T2g/IJ5SusUF2SoEUEUE
|
|
||||||
+phi9h3JGJ/AxX9/rRPJHWeluPKOdkhmFe/Qb+gote82LUlZx5R6XwfifByVqeNf
|
|
||||||
CQY9vQlRa/pNZ23QFmDFc35M6HLI3YwFkSlsJ9BWWuHe+y+/SVg6c85U0Hg4f1nY
|
|
||||||
+a4l7W1BeXlroritweWGZ2kvaAfDYXvjMRFe9v+sOn/eJ585glGHMhcGVAa00AR0
|
|
||||||
5qPHOaz6FURwnlVOXBswTD6c0foLcxPcB/sUqCCB0T1/kxtDZUDHgnNQofeisTYN
|
|
||||||
vpVN/aXAACzkVthvG1E84IQD5mVh69fedNhdYzvyF1Zd54XZC2fr3ZNbL/1vpA+7
|
|
||||||
nl+mf4ZcaGToTwEuovAzdR8eVymu5+yCBmpojWgn+VNzRodmdd7WzCgZeHd8/bib
|
|
||||||
sX0Aiyw0TvQFGVz9iM3QHbFGFcMqddHXJJaPU//u9szkiNlpcGniFPaJTwARAQAB
|
|
||||||
tCtQaW90ciBLdWN6eW5za2kgPHBpb3RyLmt1Y3p5bnNraUBnbWFpbC5jb20+iQEz
|
|
||||||
BBABCAAdFiEEf3/INPuDM+5+zpx37aB919au2lIFAlrrSDUACgkQ7aB919au2lJE
|
|
||||||
iwf+Jc22pIQLcJw58ZfaRxfMGmkkoeVqgt9K+tPW2uHgc+C1Z/iFt/wlyxOtKVk1
|
|
||||||
NjMM6PqsNTRx4mdkXQSXfp313vXMP+4GNFhva3dIzRVa9hZ6l5VOiDAwRDyr2qA4
|
|
||||||
hhCXjWqts9uXELPbUtE2x7L+nDnAbJ0ad8hbmaKjXafjvqT8LEUIZVFlR6z9EZzQ
|
|
||||||
20HYjzkmbBFRQvMCL6lEELB4ajRdugQD1ULTMt6Zz1ABfKgyJYOy9FvL1HdL4brh
|
|
||||||
yMWV8/UvSWk6fif0735jpR5hbxNHbIWTBI6Zw4X7ytnFtkFXh8RyD/qtvF4ba1Xz
|
|
||||||
UqcLqV+5fc0YO9n+SKD/gErFMIkBMwQQAQgAHRYhBLf0oRUFEOma1kUCA+zji9lw
|
|
||||||
S0GaBQJdqdKNAAoJEOzji9lwS0GaS38IAJLnQYU/bY8WJfW79+szC+RU/H8FPWCS
|
|
||||||
FHeYtw/EKALxz1+kyr/TodkAbwnV70rZOHMJ24OHDyDEVDsXjefPx39IGxwkjmPB
|
|
||||||
bIsgeZb/XmRWwxpl+jrGcqPp65M+TljKU+45SrU3tJvB+58Qlm4OuvAt44D/wrZ+
|
|
||||||
/9dKGJfHMHo7/eWi8sUjjqGftx3skTcYoqmcrTmu+0AEHBTNI/1sU1/zxZwSGySp
|
|
||||||
4aeWt2r2zBHxqp7yeVI2giMLYqDDdZwkLPBHHIK6PdZaaH0PPSR1NYHvOdyyE96M
|
|
||||||
ZFSi98pWd6GqHuAnpTPMLvL4vPInvr9cmFT9wGugLDIsfJEPIhJKTK6JAbMEEAEK
|
|
||||||
AB0WIQTYuYdIBrQCx/ecP+tHXYGfhBKNdAUCWxiLPAAKCRBHXYGfhBKNdJfXC/wI
|
|
||||||
suyLgFv0b1wx6ZXRGO9HDDeAazwHn5EdzkY3KMBQIFvg61SUG/QNMoPYTO5EfoCt
|
|
||||||
Ngfm4uf5eMSOyVAnWQxMcg5n8L/3Gz9pYdzV4QBH4NbXKF2wZKxgDVDYI3mQKGoy
|
|
||||||
EIBTBVqBJWk9GXWYQu7p4efSdz9ZhzYC48lRIqEDHqVg2kbFzfTkhII2aIGTJiQy
|
|
||||||
UKNKWpzNQPT81wx+vRQFIIl3JuhKVd2pn6HmMv5wD1Vle5JWz314mH4ww8jG9v7S
|
|
||||||
q/frtcMl4cLYWOfC0bhNa55Kr5W2oEBS9VaOpYrKy+47Al42DtgueTuTmiBcmzQV
|
|
||||||
h7+YcHrqEJllJespXGCA1WC34RTtyTtBqLebHDvQrKGZfB8NANcgpOEPUU1NslO/
|
|
||||||
cfkQYrlp8be/rN+cp5/NRICX7u5gIo/ZOB9WC98DGrrAB6CXmAFWyG+3aaAnDS88
|
|
||||||
eAU6D3tL7ImNR454wXw4xbatUmAS6fCDx9Wu26AsLNSGdwTCzM5To91nGVg0hoKJ
|
|
||||||
AjMEEAEIAB0WIQQCbKBQp72Y956Ocat4WuuV8ZMpwAUCWr7m6AAKCRB4WuuV8ZMp
|
|
||||||
wDAkEACk1zh6t79FrIwQlKz0b4WSGR9qMt4D6KyfEpLF2hE4VvXSlcFmhkngh/Ao
|
|
||||||
ys1NCKnvtBHDtgfKZ5KrKtxViSOdNPlGWyMKIQXf17rtGLoJG7ejCzQn1qIPwJ4w
|
|
||||||
depF1xHYOayTX19UCvZW9qrnP0gS/VkwxICWX5R8qls/ix3HY1eLnOdLeekmj0da
|
|
||||||
nc3LIUvGMK7fLhjmjSJ1pNFjKmxTEa6l3fI+XgY6E3beBpTHp6aR4nmP/b75/qGm
|
|
||||||
vmPiSLkoN3Bi+EjEcCzW6aOuN93DN5W4ke606SVW1bBlKhlWjaJ7eK3jt+oJEjrg
|
|
||||||
EZn+jZthk2x73DxT4IT+ORMAgDdvc1/K7xG6hHbNU8eE+COXiKvd3h1LbUj435y9
|
|
||||||
/GL9WwFVlJDrzVhElDO4tVUJEFZ+KnAcH1cM9H+ZnPK/owot/vDnDqzlCS2T4nBn
|
|
||||||
1+8QFW0X+A1InQUylY1z7TBSY5gWQu56nXhSLO4mTk021cw5HxUcgc9tYFyNXtVn
|
|
||||||
+wIWnJ2up1zwaLQe87OKfXpc4mOQL5IQSsNEbynJxRHJKK7ErrR59/iHdbeLHUDf
|
|
||||||
l76X4yYiZ+2SXuqWztotWGRfZStQxLP+4nFEQso46RXx+DJdjDxIk+2LqDdnj9VJ
|
|
||||||
N9IY5MqM6CxbCUGnS39GZ7dvLkPfAVAZvvh17i2NjVCdz/bbEYkCMwQQAQgAHRYh
|
|
||||||
BAOZeRoZn5G419MVgu5z9tmIkqZGBQJc49caAAoJEO5z9tmIkqZGVncP/RwfSCqN
|
|
||||||
5v1oZg/JpuslgY6ugAb6j9l+yMVaz1gjoZEiBZuMa4qKWIw1q+TYbs9OKw0Y67HI
|
|
||||||
1GK/POHhhjinW/2YYpIl/dUP2SUn7lI/tM5SKxTMexiD00WJTDTta3T019fQ0cdU
|
|
||||||
cCUl+ThfqU0Rbxlr88QZKK75/0x2dF5KvNISPfzGE0Q1u/YQqemFVs/Irxg6sF/s
|
|
||||||
+N2V8OFpJcOm1TrNS2pQhU8D6L3lX+ZvmnrO34wo/ROLcIGRc0qUTXbn0DfCl9JO
|
|
||||||
RopueP7DlsSy1EwxWEm6Y+VxfyiInNx3ySs3lgB1l9A1JHAbZlAqpYtQzl1ITOz/
|
|
||||||
wx66F19XBJde2zpLdZ0K5sC1BsODhVbDoa5yZ6pRx4sP2HmlBaTKq6uz2klCIis9
|
|
||||||
mQb5LJRWzswwdnmfvRG5R2u9vnJ1Fxucy3Wt/YZE5VXm0EYX1WefonOvAxM/tcnK
|
|
||||||
zS2y7VTvkAndHjS9Sn/r7i9ZubqKsYQsQHL0ywecZuslMCWjGlqMZCZdhr7OaubW
|
|
||||||
d1exHEhtAb3Oof685XdkHz9tq3m85BIoqFK8pkexDwN6h8/IPWLebpwZ6Uqwi9X6
|
|
||||||
yt+2A1mq5RH4j8SIvUPwVyNPQ8SZXZX5hil7oizjXYNF1Pkvj2tFlUcM6l9OKLlf
|
|
||||||
xI4eFWQWMcZSCTeoDRLwnCRqHcoG+nFJ9MyniQIzBBABCAAdFiEEV17ouZxEV07T
|
|
||||||
k7creYwa5eixHrgFAlusA2sACgkQeYwa5eixHrjHZxAAuRPIKLMiWxZ0ABOdBASz
|
|
||||||
lajdLEeMQ4eChj55GP5FNkdXbfe6Gc2gqY49TRj23UHVBhVWwFCcScDFtPHRtZS+
|
|
||||||
rD6cZVH0UO96iaJjuJwbthkRpHWlltT/OzmrrGnTVETtzkiufbnovfGRWMiwwziX
|
|
||||||
m/qAux29j/HRRj/npra+le7CfeGQmHa9jCG0lKUmN9ZzUrocKmYozwJIUtq207kH
|
|
||||||
9AJo7iPT9hJWsp+oLfzliIjgmGBi07Yy2r13AM6wf8Q+VoqmFUfkmonfh9TsoYLa
|
|
||||||
If5CeIe6m4Ttv6+XJ5onRA38lGWfeBZ2Xr9UnqFwX77VgRkyPOJupgrHCurl/omI
|
|
||||||
wYAuwTGN8RWuY+cn7/6zb2aMGZecH8Rn+FS+PMS10lb+f1RqWIt0T28D3xziGMGt
|
|
||||||
14AcjRA4OcNFGa/gjytj7kwqNVrOViWvgnXHi5ylE0jLWo0HBwnbCDui8tpxxbrD
|
|
||||||
FnzkJ2wlXn8+auBvNYr387kQSqnzz/uetVV/WFn4EsZXBx9rhlEzShYRUt6qg6vh
|
|
||||||
Py4yBkTZZnvx7n9NDpZBf+NN9mZY2ScnNdRrIzvgbKvNMd12EqRzwGGfriCNiwc9
|
|
||||||
Se/QWIPYWrucrDlWHg7lNYv8RDQ3V2UHzSlU9EABuf7fpcozW9vBxO4F7JrsUcO7
|
|
||||||
unYhx/9dF+q/Ns2dhgrx/GaJAjMEEAEIAB0WIQSgTfQsUFGekU8BR5aHherrDjAL
|
|
||||||
3AUCXGDebwAKCRCHherrDjAL3CkbD/4pwgXDHiiNn0bQ2ZwvqoaGW6vxTRv110T4
|
|
||||||
dDgSCZlAPbHXRvMWyDnCd/GQX4xoSillIHnwYYR35BZ8jNiAkjNme9dELiEWxtUK
|
|
||||||
bZtbjIoIKk3qTJO1s+cxkjMD94Bs1h9ueeEPWXSwMz/sDuGkZCMRPFMSQC6mSmGX
|
|
||||||
hLf8XejrMMq/F9TnADqaSF7QidzZiWNh+27LTbW869U5m+yvoKhXqjnwDtgS4BFW
|
|
||||||
mToQHJ85iBZpe7dm0LJyM44yhaJHFHVBpeBKN07FZaJ/BrksRvQtnzNGfS7J95xo
|
|
||||||
4rKjf4vMuxV4up1VRzpePzwMAghYGAdfEgie3SeyGxcBc4YL0ETH/pocMKtm8MzX
|
|
||||||
9npJVoiMqF5NQT4M+oyBkfdBB93M8s2AreM4ahqYt4aGuvQc+Qs65NL2qL96e6S7
|
|
||||||
uS27iDn+rVm8HlvZYNbfQ7Fzp6Bh/6GrPtBbSfjof6zF0/J977n6t4MI6Fv5DJI3
|
|
||||||
+XsJ3EVSRzNH6kBVlnvW8p83EPj8OZVS8dJH6qwBPVyzOhYTAvVVOpfUXpLaB7Yp
|
|
||||||
Mef5e667iBK6/B3MB9cyS90nG3QqpXe5mfToti5CRivKUVaPbzbgBpX0VhYq9XHV
|
|
||||||
7zw1WLFYEYi+553y90z4Av9ZszrwvR77pv4ep31/KJdYfcM1bXW4WY4OTHN52va5
|
|
||||||
jXhCnjbYQ4kCMwQQAQoAHRYhBMiYDZYLa9k7YhZk1IkMiHn4fivXBQJdVHqAAAoJ
|
|
||||||
EIkMiHn4fivXus8QAMNEPwsJ8sgu/RpJyA9e3JZUDYgjpdMJoP+7/GbeU1dkS826
|
|
||||||
FLt7bejafDgqZ49J9TQJDsx+rLHO1W+24GOUuKHkuxrvMtKxHnbRBotMvNOqLS+K
|
|
||||||
1QuzaZ7tLUxNEDqJt0g9BS7rlrDTJQyMh6iUs9tmeoWjRqthFQSPnBwx7jgkLz7o
|
|
||||||
8pFvtWoCGGfcCZsoldN9briZdO7KE6wAt3yPa8zoNo4C3ZfSlT7U6/2aKTjSs+S8
|
|
||||||
+wJQ4a/9DpK3TEBXX7/uA8QcYHjyfOSypp1jL2uprDi1Pk8tpr0ewBeh2YIYyVAd
|
|
||||||
p0lJrgg60nbhvnerCEjmeArv9bHgC9A/Pw7MKPBVRddclRCL/lnSXXDP/MHivdJw
|
|
||||||
CMoizPQ4EjHRNXV5FgUokqaplkZ6zAaY1GND3Prul4rOP4BJS7SKYhe2X9C/L/Ll
|
|
||||||
bjpgI135tggQaw3MLRZ97JJLwwj6qIlXvMmA8HXEfUSEZo0YewrKW7NLnnocL5ry
|
|
||||||
tiXxw/rHrjMd5nppAEewjLL0chAvlP23on6WaCqcUMOy8PpM4PJhTy+Vm3hJ34MV
|
|
||||||
zy+MBAPkTfy9/QDl9pj3UkTwwQpx60zJs4Vg7PKEyiE9BJ9E86gJeyFTHdJm/B7n
|
|
||||||
FiER+E/qSRlfIRrOSybf+Dj3P84/UQL3oqNCs7O1VaiPRolwgh9xD8f+OlEAiQI5
|
|
||||||
BBMBCAAjBQJYJc0mAhsDBwsJCAcDAgEGFQgCCQoLBBYCAwECHgECF4AACgkQEFvQ
|
|
||||||
5zlJm9so2RAArbNBzj1H2dRWSLdBvWjnMPzUuDA6odyb+TCF+1W5SG3+lY6V2Ve1
|
|
||||||
hRViQVm8VyJ5qi4SqRPSqP8KeM0/REpfYIsIlFUOVLKzsBlgW6QchDfAOF0041Ew
|
|
||||||
2CnF1JLu86j3QhJh66jemtm96sk/bKTR5yETsL3Rch8NDyuBdo5j3rl+fP2O7TME
|
|
||||||
Ffu9xUZx5PE3QBF12pZPA5llt+FVryd4DeJSKwQbpyerZ0/aTAKZb8bftwrtxRGI
|
|
||||||
hNpSIUcsYezbCnJ77E6YzFCgizXbQkt/Uyndnc/4vUw8YdCdXUduQ6GPR8cLsikZ
|
|
||||||
84E7b2Nk+VhNbjJI+buckZyhdFaEHTpgFBKy32p9YczPcItWX71fAVoKvyiopULs
|
|
||||||
SU/hayhf9NlgqchISJ9HKIyvsF8nkpgCOSDEjrL/F3GRdtb6BAg9ZtDQ7jbG+cHL
|
|
||||||
m1wqyMn1DDpvoa+Jo7Y8V77ofI7A24AGcb7O6MK+MaBCPVTegaYsPfGyGOa3raKD
|
|
||||||
cv/ysiwZbo+qHzuPo6s2bGP3PPaWUItmPZ0tZ3vAuA9K34bStVDTvnFfHpNUnbcA
|
|
||||||
Eh1SmJXF6cLZV1QLXP8LpaDOAMPompfKmWnjCjwnBtJPBza+uVTpfHX7APmesDFR
|
|
||||||
ZBczjOLrCNSgPTHW7LqYD361X28KfZ5brC8VrQBc8eZmyLlxwtBMr/W5Ag0EWCXN
|
|
||||||
JgEQAOT7ie/rtkGdQdjwuW80wEaE84CNUpUuuCj/VGaDJO4qDF7sYG1KrO2ZFre8
|
|
||||||
jViKk72CNVDypZkL/3W0Zc9CPaPyiAP4EJ+cKirv6789u8lPJg6bBzlPQ9+wQIIY
|
|
||||||
eVc9VMNWprSFfe8420Qd65USbjT6H2lJ/VDVTQ2+tX/v3SCuzrnx+dslJdkxEENB
|
|
||||||
AbeUhvENhBu2GRlQvRAeZScB5PzYXwFH4R6H6j2F39U6C1KCk6Vd590pp24ZunvI
|
|
||||||
mAsgxlXO2RfPKYNfwqbtv5lLBZPi4mqgZXvw753ig/naj9h/9k95AoLxX6IgBCfn
|
|
||||||
E5VSNFn1vNVBvjOQOmklE/8gdoM/+Q+z5xBC4k+Ul8Yrrp441hg+NfT6UtV8qdQo
|
|
||||||
0ZFwbK6MnWSJLl0q6BLh676TqUYRAC6OKQPC/MsRuueOrm4LON65JTauNpDmu5Wb
|
|
||||||
GYTxzkyLcTtcNigeij/ruLfZvao9TmrXQXcwmsv5AiUNw+KM6psSiVoVDlw4J1X9
|
|
||||||
9c/XazfaiPnGuc0TLvdyrJUx59er69M5UdShVm7ZYsP77Mdw4B8Dx7PrPTv3XweQ
|
|
||||||
RY8egEQbBFad6fkJUAz4ui/uXhqasyKlnE4sDKVMkCJLOFthx2Qoj90tED7o+PUg
|
|
||||||
rRf9hZxYbX4PKTurxuOxUpNyDPIQamDHBqP7xDmWFjpEPjODABEBAAGJAh8EGAEI
|
|
||||||
AAkFAlglzSYCGwwACgkQEFvQ5zlJm9u9KQ/8CdFgMkqI75CXLuKwPJoqGZ8MOMvr
|
|
||||||
AiD8zJxEHqYE7QnreiDS1/WTHh7nLkA/+ISmVWiLRa3qhmMqi35Z/4Ev2nPBZ4M2
|
|
||||||
ToDdydSnuEhSC3rlyJ9Du724UsKBBoH/LiRp4yMv6Y7b4lH4orONriEjjb1X3Ln3
|
|
||||||
Dcp83Zho3ANvhjWz2lL4XRzCLnUdYwV56872vH3AeSAvjfgbf5oYlLhXgMUXsNF/
|
|
||||||
2YBn1UOcqwKgmOGl8capSPz2+q/sGjYLIMQ6pA5XKHrI8FjdON2AYxrSRb8RBBAW
|
|
||||||
hFvJNrAwzAqorolYtNkAfXgU0kayY9SXElQBsNnU/9EcW6/eqfZPWzHgTRXV6yvC
|
|
||||||
OAygYHVwad62iQMzFGSamQYcinnwZccRuRNRCYHzIjB9tCOMe2qa5pjPeYMTk8vK
|
|
||||||
9yrYeRzBeQFMQXQgRZV8GcN8E/qBBc85qGZWRw8XeXpqBo08teH81jnjbbw+uZrl
|
|
||||||
ItFD89SDex93x3lKKaBo31AAqmYx5hOEG4q2cOh33kB9WOozqLf0UjUQOyBpN+Cu
|
|
||||||
/PK2WJKMqBfFjpef34eIMVOzhxp/oQ4xVQD+H27ExayutgIvExrFBeRU1RxhwRAW
|
|
||||||
fiC0aDWzK4QuWnmZG1oSv7hLIMChvUM39Oo/Jz1BYTVfCRWMQZeX/ncaZCSBM/MM
|
|
||||||
iWTuv7mXY0bNG+s=
|
|
||||||
=SF+D
|
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
|
0
doc/DESCRIPTION.md
Normal file
0
doc/DESCRIPTION.md
Normal file
0
doc/DESCRIPTION_fr.md
Normal file
0
doc/DESCRIPTION_fr.md
Normal file
|
@ -25,11 +25,10 @@
|
||||||
},
|
},
|
||||||
"multi_instance": true,
|
"multi_instance": true,
|
||||||
"services": [
|
"services": [
|
||||||
"nginx",
|
"nginx"
|
||||||
"postgresql"
|
|
||||||
],
|
],
|
||||||
"arguments": {
|
"arguments": {
|
||||||
"install" : [
|
"install": [
|
||||||
{
|
{
|
||||||
"name": "domain",
|
"name": "domain",
|
||||||
"type": "domain"
|
"type": "domain"
|
||||||
|
@ -39,7 +38,7 @@
|
||||||
"type": "user"
|
"type": "user"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "admin_password",
|
"name": "password",
|
||||||
"type": "password",
|
"type": "password",
|
||||||
"ask": {
|
"ask": {
|
||||||
"en": "Admin password. Must contain at least 10 characters, one lowercase letter, one uppercase letter, one number, and one symbol (e.g. '~!@#$%^&*()').",
|
"en": "Admin password. Must contain at least 10 characters, one lowercase letter, one uppercase letter, one number, and one symbol (e.g. '~!@#$%^&*()').",
|
||||||
|
|
|
@ -1,5 +1,47 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
pkg_dependencies="build-essential cmake libssl-dev libcurl4-dev libxml2-dev libxslt-dev imagemagick ghostscript curl libmagickwand-dev git libpq-dev redis-server postgresql bison "
|
|
||||||
ruby_build_dependencies="bison libffi-dev libgdbm-dev libncurses5-dev libsqlite3-dev libyaml-dev pkg-config sqlite3 zlib1g-dev libgmp-dev libreadline-dev libssl-dev libjemalloc-dev"
|
|
||||||
|
|
||||||
current_tag="v0.7.17.0"
|
#=================================================
|
||||||
|
# COMMON VARIABLES
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
# dependencies used by the app
|
||||||
|
pkg_dependencies="cmake imagemagick ghostscript curl libmagickwand-dev git libpq-dev redis-server postgresql"
|
||||||
|
build_pkg_dependencies="libffi-dev libgdbm-dev libncurses5-dev libyaml-dev pkg-config sqlite3 libgmp-dev libssl-dev"
|
||||||
|
|
||||||
|
ruby_version=2.6.6
|
||||||
|
nodejs_version=14
|
||||||
|
bundler_version=1.17.3
|
||||||
|
|
||||||
|
# Workaround for Mastodon on Bullseye
|
||||||
|
# See https://github.com/mastodon/mastodon/issues/15751#issuecomment-873594463
|
||||||
|
if [ "$(lsb_release --codename --short)" = "bullseye" ]; then
|
||||||
|
case $YNH_ARCH in
|
||||||
|
amd64)
|
||||||
|
arch="x86_64"
|
||||||
|
;;
|
||||||
|
arm64)
|
||||||
|
arch="aarch64"
|
||||||
|
;;
|
||||||
|
armel|armhf)
|
||||||
|
arch="arm"
|
||||||
|
;;
|
||||||
|
i386)
|
||||||
|
arch="i386"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
ld_preload="LD_PRELOAD=/usr/lib/$arch-linux-gnu/libjemalloc.so"
|
||||||
|
else
|
||||||
|
ld_preload=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# PERSONAL HELPERS
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# EXPERIMENTAL HELPERS
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# FUTURE OFFICIAL HELPERS
|
||||||
|
#=================================================
|
||||||
|
|
|
@ -6,12 +6,17 @@
|
||||||
# IMPORT GENERIC HELPERS
|
# IMPORT GENERIC HELPERS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
#Keep this path for calling _common.sh inside the execution's context of backup and restore scripts
|
# Keep this path for calling _common.sh inside the execution's context of backup and restore scripts
|
||||||
|
source ../settings/scripts/_common.sh
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# MANAGE SCRIPT FAILURE
|
# MANAGE SCRIPT FAILURE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
|
ynh_clean_setup () {
|
||||||
|
true
|
||||||
|
}
|
||||||
# Exit if an error occurs during the execution of the script
|
# Exit if an error occurs during the execution of the script
|
||||||
ynh_abort_if_errors
|
ynh_abort_if_errors
|
||||||
|
|
||||||
|
@ -23,42 +28,44 @@ ynh_print_info --message="Loading installation settings..."
|
||||||
app=$YNH_APP_INSTANCE_NAME
|
app=$YNH_APP_INSTANCE_NAME
|
||||||
|
|
||||||
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
||||||
|
domain=$(ynh_app_setting_get --app=$app --key=domain)
|
||||||
|
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STANDARD BACKUP STEPS
|
# DECLARE DATA AND CONF FILES TO BACKUP
|
||||||
#=================================================
|
#=================================================
|
||||||
# clean folder
|
ynh_print_info --message="Declaring files to be backed up..."
|
||||||
ynh_secure_remove --file="$final_path/backup"
|
|
||||||
mkdir -p $final_path/backup
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# BACKUP DIASPORA DATABASE
|
# BACKUP THE APP MAIN DIR
|
||||||
#=================================================
|
|
||||||
ynh_print_info --message="Backup Diaspora DB..."
|
|
||||||
|
|
||||||
db_pass=$(ynh_app_setting_get --app=$app --key=psqlpwd)
|
|
||||||
dump_file="$final_path/backup/$app.dump"
|
|
||||||
pg_dump -d "dbname=$app user=$app password=$db_pass host=localhost" -Fc -f $dump_file
|
|
||||||
ynh_backup --src_path="$dump_file"
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# BACKUP DIASPORA UPLOADS
|
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
if [ -x $final_path/diaspora/public/uploads ]; then
|
ynh_backup --src_path="$final_path"
|
||||||
ynh_backup --src_path="$final_path/diaspora/public/uploads"
|
|
||||||
else
|
|
||||||
echo "uploads folder does not exist. Skipping."
|
|
||||||
fi
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# BACKUP CONF FILES
|
# BACKUP THE NGINX CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
ynh_backup --src_path="$final_path/diaspora/config/database.yml"
|
ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf"
|
||||||
ynh_backup --src_path="$final_path/diaspora/config/diaspora.yml"
|
|
||||||
|
#=================================================
|
||||||
|
# SPECIFIC BACKUP
|
||||||
|
#=================================================
|
||||||
|
# BACKUP SYSTEMD
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
ynh_backup --src_path="/etc/systemd/system/$app_web.service"
|
||||||
|
ynh_backup --src_path="/etc/systemd/system/$app_sidekiq.service"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# BACKUP THE POSTGRESQL DATABASE
|
||||||
|
#=================================================
|
||||||
|
ynh_print_info --message="Backing up the PostgreSQL database..."
|
||||||
|
|
||||||
|
ynh_psql_dump_db --database="$db_name" > db.sql
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# END OF SCRIPT
|
# END OF SCRIPT
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
ynh_print_info --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)."
|
ynh_print_info --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)."
|
||||||
|
|
|
@ -1,30 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
pushd $final_path/diaspora
|
|
||||||
echo 2.6.6 > .ruby-version # overwrite 2.6 default from diaspora because rbenv does not understand it
|
|
||||||
sudo -u $app --login << EOF
|
|
||||||
gem install bundler:1.17.3
|
|
||||||
cd diaspora
|
|
||||||
script/configure_bundler
|
|
||||||
bin/bundle install --full-index --with=postgresql
|
|
||||||
EOF
|
|
||||||
# for some reason rake logs a lot in stderr (tried --quiet, didn't change anything)
|
|
||||||
# redirecting it to stdout to have a saner log on yunohost side
|
|
||||||
sudo -u $app /bin/bash -l << EOF
|
|
||||||
source /usr/share/yunohost/helpers
|
|
||||||
ynh_use_nodejs
|
|
||||||
cd diaspora
|
|
||||||
RAILS_ENV=production bundle exec rake db:migrate 2>&1
|
|
||||||
EOF
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# ASSETS PRECOMPILATION
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
sudo -u $app /bin/bash << EOF
|
|
||||||
source /usr/share/yunohost/helpers
|
|
||||||
ynh_use_nodejs
|
|
||||||
cd diaspora
|
|
||||||
RAILS_ENV=production bin/rake assets:precompile 2>&1
|
|
||||||
EOF
|
|
||||||
popd
|
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
# sidekiq
|
|
||||||
echo $app $final_path
|
|
||||||
install -T --mode=0644 -v ../conf/diaspora_sidekiq.service /etc/systemd/system/${app}_sidekiq.service
|
|
||||||
ynh_replace_string --match_string=__APP__ --replace_string=$app --target_file=/etc/systemd/system/${app}_sidekiq.service
|
|
||||||
ynh_replace_string --match_string=__FINALPATH__ --replace_string=$final_path --target_file=/etc/systemd/system/${app}_sidekiq.service
|
|
||||||
# web
|
|
||||||
install -T --mode=0644 -v ../conf/diaspora_web.service /etc/systemd/system/${app}_web.service
|
|
||||||
ynh_replace_string --match_string=__APP__ --replace_string=$app --target_file=/etc/systemd/system/${app}_web.service
|
|
||||||
ynh_replace_string --match_string=__FINALPATH__ --replace_string=$final_path --target_file=/etc/systemd/system/${app}_web.service
|
|
||||||
# tmp files
|
|
||||||
install -T --mode=0644 -v ../conf/diaspora.tmpfiles.d /etc/tmpfiles.d/${app}.conf
|
|
||||||
ynh_replace_string --match_string=__APP__ --replace_string=$app --target_file=/etc/tmpfiles.d/${app}.conf
|
|
||||||
# target unit
|
|
||||||
install -T --mode=0644 -v ../conf/diaspora.target /etc/systemd/system/${app}.target
|
|
||||||
ynh_replace_string --match_string=__APP__ --replace_string=$app --target_file=/etc/systemd/system/${app}.target
|
|
||||||
# reload, create, enable and start stuff
|
|
||||||
systemctl daemon-reload
|
|
||||||
systemd-tmpfiles --create
|
|
||||||
systemctl enable ${app}.target ${app}_sidekiq.service ${app}_web.service
|
|
||||||
systemctl restart ${app}.target
|
|
||||||
ynh_systemd_action --service_name=${app}_web.service \
|
|
||||||
--action=restart\
|
|
||||||
--log_path="$final_path/diaspora/log/production.log" \
|
|
||||||
--line_match="successfully configured the federation library"
|
|
||||||
ynh_systemd_action --service_name=${app}_sidekiq.service \
|
|
||||||
--action=restart\
|
|
||||||
--log_path="systemd" \
|
|
||||||
--line_match="Running in ruby"
|
|
232
scripts/install
232
scripts/install
|
@ -1,16 +1,5 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# TODO
|
|
||||||
# - which service to register to ynuhosto? diaspora.target only ? All of them ?
|
|
||||||
# - a setting to enable / disable registration
|
|
||||||
# - say something about the registration to https://the-federation.info/
|
|
||||||
# - ...
|
|
||||||
|
|
||||||
## vars for remove script
|
|
||||||
can_remove_db=0
|
|
||||||
can_remove_home=0
|
|
||||||
can_remove_user=0
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# GENERIC START
|
# GENERIC START
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -18,15 +7,17 @@ can_remove_user=0
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
source _common.sh
|
source _common.sh
|
||||||
|
source ynh_install_ruby__2
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# MANAGE SCRIPT FAILURE
|
# MANAGE SCRIPT FAILURE
|
||||||
#=================================================
|
#=================================================
|
||||||
# Exit if an error occurs during the execution of the script
|
|
||||||
ynh_clean_setup() {
|
ynh_clean_setup () {
|
||||||
ynh_clean_check_starting
|
ynh_clean_check_starting
|
||||||
}
|
}
|
||||||
|
# Exit if an error occurs during the execution of the script
|
||||||
ynh_abort_if_errors
|
ynh_abort_if_errors
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -34,158 +25,177 @@ ynh_abort_if_errors
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
domain=$YNH_APP_ARG_DOMAIN
|
domain=$YNH_APP_ARG_DOMAIN
|
||||||
|
path_url="/"
|
||||||
admin=$YNH_APP_ARG_ADMIN
|
admin=$YNH_APP_ARG_ADMIN
|
||||||
admin_password=$YNH_APP_ARG_ADMIN_PASSWORD
|
password=$YNH_APP_ARG_PASSWORD
|
||||||
admin_email=$(ynh_user_get_info --username=$admin --key=mail)
|
|
||||||
|
admin_mail=$(ynh_user_get_info --username=$admin --key=mail)
|
||||||
|
|
||||||
app=$YNH_APP_INSTANCE_NAME
|
app=$YNH_APP_INSTANCE_NAME
|
||||||
final_path=/var/www/$app
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
|
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Validating installation parameters..." --weight=1
|
ynh_script_progression --message="Validating installation parameters..." --weight=1
|
||||||
# check path availability
|
|
||||||
test ! -e "$final_path" || ynh_die "This path already contains a folder"
|
final_path=/var/www/$app
|
||||||
can_remove_home=1
|
test ! -e "$final_path" || ynh_die --message="This path already contains a folder"
|
||||||
|
|
||||||
# Register (book) web path
|
# Register (book) web path
|
||||||
ynh_webpath_register --app=$app --domain=$domain --path_url=/
|
ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STORE SETTINGS FROM MANIFEST
|
# STORE SETTINGS FROM MANIFEST
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Saving app settings..." --weight=1
|
ynh_script_progression --message="Storing installation settings..." --weight=1
|
||||||
|
|
||||||
ynh_app_setting_set --app=$app --key=domain --value=$domain
|
ynh_app_setting_set --app=$app --key=domain --value=$domain
|
||||||
ynh_app_setting_set --app=$app --key=path --value=/
|
ynh_app_setting_set --app=$app --key=path --value=$path_url
|
||||||
ynh_app_setting_set --app=$app --key=final_path --value=$final_path
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STANDARD MODIFICATIONS
|
# STANDARD MODIFICATIONS
|
||||||
#=================================================
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# INSTALL DEPENDENCIES
|
# INSTALL DEPENDENCIES
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Installing dependencies..." --weight=5
|
ynh_script_progression --message="Installing dependencies..." --weight=5
|
||||||
ynh_install_app_dependencies $pkg_dependencies $ruby_build_dependencies
|
|
||||||
|
|
||||||
#=================================================
|
ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies $build_pkg_dependencies
|
||||||
# CHECK DB AVAILABILITY
|
ynh_exec_warn_less ynh_install_ruby --ruby_version=$ruby_version
|
||||||
#=================================================
|
ynh_exec_warn_less ynh_install_nodejs --nodejs_version=$nodejs_version
|
||||||
ynh_script_progression --message="Check DB availability"
|
|
||||||
# now that we have psql for sure, test db existence
|
|
||||||
ynh_script_progression --message="Checking DB availability" --weight=1
|
|
||||||
ynh_psql_database_exists --database $app && ynh_die --message="There is already a database: $app"
|
|
||||||
can_remove_db=1
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# CREATE DEDICATED USER
|
# CREATE DEDICATED USER
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Creating user..." --weight=1
|
ynh_script_progression --message="Configuring system user..." --weight=1
|
||||||
|
|
||||||
# Create a system user
|
# Create a system user
|
||||||
ynh_system_user_create --username=$app --home_dir=$final_path --use_shell
|
ynh_system_user_create --username=$app --home_dir="$final_path"
|
||||||
can_remove_user=1
|
|
||||||
mkdir -p $final_path
|
|
||||||
chmod 0750 $final_path -R
|
|
||||||
chown $app:www-data $final_path
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# INSTALL RVM, RUBY AND NODE FOR CURRENT USER
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Installing rvm and ruby... (will take a long time)" --weight=20
|
|
||||||
source ./install_ruby
|
|
||||||
ynh_script_progression --message="Installing node" --weight=10
|
|
||||||
ynh_install_nodejs --nodejs_version=14
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
|
||||||
#=================================================
|
|
||||||
# Download, check integrity, unucompress and patch the source from app.src
|
|
||||||
pushd $final_path
|
|
||||||
ynh_script_progression --message="Download the sources..." --weight=10
|
|
||||||
ynh_exec_warn_less sudo -u $app git clone https://github.com/diaspora/diaspora.git -b $current_tag
|
|
||||||
popd
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# CREATE A POSTGRESQL DATABASE
|
# CREATE A POSTGRESQL DATABASE
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Creating database..." --weight=1
|
ynh_script_progression --message="Creating a PostgreSQL database..." --weight=1
|
||||||
|
|
||||||
db_name=$(ynh_sanitize_dbid $app)
|
db_name=$(ynh_sanitize_dbid $app)
|
||||||
|
db_user=$db_name
|
||||||
ynh_app_setting_set --app=$app --key=db_name --value=$db_name
|
ynh_app_setting_set --app=$app --key=db_name --value=$db_name
|
||||||
ynh_psql_test_if_first_run
|
ynh_psql_test_if_first_run
|
||||||
ynh_exec_warn_less ynh_psql_setup_db --db_user=$db_name --db_name=$db_name
|
ynh_psql_setup_db --db_user=$db_user --db_name=$db_name
|
||||||
db_pass=$(ynh_app_setting_get --app=$app --key=psqlpwd)
|
db_pwd=$(ynh_app_setting_get --app=$app --key=psqlpwd)
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# EXPORT VARIABLES FOR TEMPLATING
|
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
||||||
#=================================================
|
#=================================================
|
||||||
export app
|
ynh_script_progression --message="Setting up source files..."
|
||||||
export domain
|
|
||||||
export db_pass
|
|
||||||
export final_path
|
|
||||||
export admin
|
|
||||||
|
|
||||||
#=================================================
|
ynh_app_setting_set --app=$app --key=final_path --value=$final_path
|
||||||
# CONFIGURE DIASPORA
|
# Download, check integrity, uncompress and patch the source from app.src
|
||||||
#=================================================
|
ynh_setup_source --dest_dir="$final_path/live"
|
||||||
ynh_script_progression --message="Configure diaspora..." --weight=1
|
|
||||||
ynh_render_template ../conf/diaspora.yml $final_path/diaspora/config/diaspora.yml
|
|
||||||
ynh_render_template ../conf/database.yml $final_path/diaspora/config/database.yml
|
|
||||||
|
|
||||||
#=================================================
|
chmod 750 "$final_path"
|
||||||
# STORE THE CHECKSUM OF THE CONFIG FILE
|
chmod -R o-rwx "$final_path"
|
||||||
#=================================================
|
chown -R $app:www-data "$final_path"
|
||||||
# Calculate and store the config file checksum into the app settings
|
|
||||||
ynh_store_file_checksum --file="$final_path/diaspora/config/diaspora.yml"
|
|
||||||
ynh_store_file_checksum --file="$final_path/diaspora/config/database.yml"
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# Bundle the ruby app
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Precompile assets (will take a long time)..." --weight=40
|
|
||||||
source ./bundle_app
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# NGINX CONFIGURATION
|
# NGINX CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
# Create a dedicated nginx config
|
ynh_script_progression --message="Configuring NGINX web server..." --weight=1
|
||||||
ynh_script_progression --message="configure nginx..." --weight=1
|
|
||||||
|
# Create a dedicated NGINX config
|
||||||
ynh_add_nginx_config
|
ynh_add_nginx_config
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# SETUP SYSTEMD
|
# ADD A CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
# Create a dedicated systemd config
|
ynh_script_progression --message="Adding a configuration file..." --weight=1
|
||||||
ynh_script_progression --message="configure systemd unit..." --weight=1
|
|
||||||
source ./create_services
|
ynh_add_config --template="../conf/diaspora.yml" --destination="$final_path/live/config/diaspora.yml"
|
||||||
|
ynh_add_config --template="../conf/database.yml" --destination="$final_path/live/config/database.yml"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# ADVERTISE SERVICE IN ADMIN PANEL
|
# BUILD APP
|
||||||
#=================================================
|
#=================================================
|
||||||
yunohost service add $app.target \
|
ynh_script_progression --message="Building app..." --weight=40
|
||||||
--log $final_path/diaspora/log/production.log \
|
|
||||||
$final_path/diaspora/log/unicorn-stderr.log\
|
|
||||||
$final_path/diaspora/log/unicorn-stdout.log\
|
|
||||||
$final_path/diaspora/log/sidekiq.log\
|
|
||||||
--description "Diaspora service (unicorn web and sidekiq)"
|
|
||||||
|
|
||||||
#=================================================
|
pushd $final_path/live
|
||||||
# SETUP SSOWAT
|
ynh_use_ruby
|
||||||
#=================================================
|
ynh_use_nodejs
|
||||||
ynh_permission_update --permission "main" --add visitors
|
ynh_gem install bundler:$bundler_version
|
||||||
|
ynh_exec_as $app $ynh_ruby_load_path $ld_preload script/configure_bundler
|
||||||
#=================================================
|
ynh_exec_as $app $ynh_ruby_load_path $ld_preload bin/bundle install --full-index --with=postgresql
|
||||||
# CREATE AN ADMIN
|
ynh_exec_warn_less ynh_exec_as $app RAILS_ENV=production $ynh_ruby_load_path $ld_preload bin/bundle exec rake db:migrate 2>&1
|
||||||
#=================================================
|
ynh_exec_warn_less ynh_exec_as $app RAILS_ENV=production $ynh_ruby_load_path $ld_preload bin/rake assets:precompile 2>&1
|
||||||
ynh_script_progression --message="Create admin..." --weight=1
|
ynh_exec_warn_less ynh_exec_as $app RAILS_ENV=production $ynh_ruby_load_path $ld_preload bin/bundle exec rails console << END
|
||||||
pushd $final_path/diaspora
|
user = User.build({username: '$admin', email: '$admin_mail', password: '$password', password_confirmation: '$password' })
|
||||||
sudo -u $app /bin/bash --login << EOF
|
|
||||||
RAILS_ENV=production bundle exec rails console << END
|
|
||||||
user = User.build({username: '$admin', email: '$admin_email', password: '$admin_password', password_confirmation: '$admin_password' })
|
|
||||||
user.save
|
user.save
|
||||||
user.seed_aspects
|
user.seed_aspects
|
||||||
Role.add_admin user.person
|
Role.add_admin user.person
|
||||||
END
|
END
|
||||||
EOF
|
|
||||||
popd
|
popd
|
||||||
|
|
||||||
|
ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies
|
||||||
|
ynh_package_autoremove
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# SETUP SYSTEMD
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Configuring a systemd service..." --weight=1
|
||||||
|
|
||||||
|
ynh_add_systemd_config --service="${app}_sidekiq" --template="diaspora_sidekiq.service"
|
||||||
|
ynh_add_systemd_config --service="${app}_web" --template="diaspora_web.service"
|
||||||
|
|
||||||
|
# tmp files
|
||||||
|
install -T --mode=0644 -v ../conf/diaspora.tmpfiles.d /etc/tmpfiles.d/${app}.conf
|
||||||
|
ynh_replace_string --match_string=__APP__ --replace_string=$app --target_file=/etc/tmpfiles.d/${app}.conf
|
||||||
|
|
||||||
|
# target unit
|
||||||
|
install -T --mode=0644 -v ../conf/diaspora.target /etc/systemd/system/${app}.target
|
||||||
|
ynh_replace_string --match_string=__APP__ --replace_string=$app --target_file=/etc/systemd/system/${app}.target
|
||||||
|
|
||||||
|
# reload, create, enable and start stuff
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemd-tmpfiles --create
|
||||||
|
systemctl enable ${app}.target --quiet
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# GENERIC FINALIZATION
|
||||||
|
#=================================================
|
||||||
|
# INTEGRATE SERVICE IN YUNOHOST
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Integrating service in YunoHost..."
|
||||||
|
|
||||||
|
yunohost service add $app.target \
|
||||||
|
--log $final_path/live/log/production.log \
|
||||||
|
$final_path/live/log/unicorn-stderr.log\
|
||||||
|
$final_path/live/log/unicorn-stdout.log\
|
||||||
|
$final_path/live/log/sidekiq.log\
|
||||||
|
--description "Diaspora service (unicorn web and sidekiq)"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# START SYSTEMD SERVICE
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Starting a systemd service..."
|
||||||
|
|
||||||
|
systemctl restart ${app}.target
|
||||||
|
ynh_systemd_action --service_name=${app}_web.service --action=restart --log_path="$final_path/live/log/production.log" --line_match="successfully configured the federation library"
|
||||||
|
ynh_systemd_action --service_name=${app}_sidekiq.service --action=restart --log_path="systemd" --line_match="Running in ruby"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# SETUP SSOWAT
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Configuring permissions..."
|
||||||
|
|
||||||
|
ynh_permission_update --permission="main" --add="visitors"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# RELOAD NGINX
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Reloading NGINX web server..."
|
||||||
|
|
||||||
|
ynh_systemd_action --service_name=nginx --action=reload
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# END OF SCRIPT
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
ynh_script_progression --message="Installation of $app completed"
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
# some stuff we don't care about really.
|
|
||||||
# clone ynh_experimental helpers
|
|
||||||
pushd $final_path
|
|
||||||
if [ -x Experimental_helpers ]; then
|
|
||||||
pushd Experimental_helpers
|
|
||||||
ynh_exec_warn_less git fetch
|
|
||||||
popd
|
|
||||||
else
|
|
||||||
ynh_exec_warn_less git clone https://github.com/YunoHost-Apps/Experimental_helpers.git
|
|
||||||
fi
|
|
||||||
pushd Experimental_helpers
|
|
||||||
ynh_exec_warn_less git checkout d05b4db
|
|
||||||
source ./ynh_install_ruby/ynh_install_ruby
|
|
||||||
popd
|
|
||||||
popd
|
|
||||||
ynh_exec_warn_less ynh_install_ruby --ruby_version=2.6.6
|
|
||||||
|
|
113
scripts/remove
113
scripts/remove
|
@ -7,105 +7,94 @@
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
source _common.sh
|
source _common.sh
|
||||||
|
source ynh_install_ruby__2
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
can_remove_db=${can_remove_db:=1}
|
|
||||||
can_remove_home=${can_remov_home:=1}
|
|
||||||
can_remove_user=${can_remove_user:=1}
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# LOAD SETTINGS
|
# LOAD SETTINGS
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Load settings"
|
ynh_script_progression --message="Loading installation settings..."
|
||||||
|
|
||||||
app=$YNH_APP_INSTANCE_NAME
|
app=$YNH_APP_INSTANCE_NAME
|
||||||
|
|
||||||
domain=$(ynh_app_setting_get $app domain)
|
domain=$(ynh_app_setting_get --app=$app --key=domain)
|
||||||
db_name=$(ynh_app_setting_get $app db_name)
|
db_name=$(ynh_app_setting_get --app=$app --key=db_name)
|
||||||
final_path=$(ynh_app_setting_get $app final_path)
|
db_user=$db_name
|
||||||
|
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STANDARD REMOVE
|
# STANDARD REMOVE
|
||||||
|
#=================================================
|
||||||
|
# REMOVE SERVICE INTEGRATION IN YUNOHOST
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
# Remove the service from the list of services known by YunoHost (added from `yunohost service add`)
|
||||||
|
if ynh_exec_warn_less yunohost service status $app.target >/dev/null
|
||||||
|
then
|
||||||
|
ynh_script_progression --message="Removing $app.target service integration..."
|
||||||
|
yunohost service remove $app.target
|
||||||
|
fi
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# STOP AND REMOVE SERVICE
|
# STOP AND REMOVE SERVICE
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Remove services"
|
ynh_script_progression --message="Stopping and removing the systemd service..."
|
||||||
yunohost service remove $app.target
|
|
||||||
systemctl stop ${app}.target ${app}_sidekiq.service ${app}_web.service
|
systemctl stop ${app}.target
|
||||||
systemctl disable ${app}.target ${app}_sidekiq.service ${app}_web.service --quiet
|
systemctl disable ${app}.target --quiet
|
||||||
ynh_secure_remove --file="/etc/systemd/system/${app}_web.service"
|
ynh_remove_systemd_config --service="$app_web"
|
||||||
ynh_secure_remove --file="/etc/systemd/system/${app}_sidekiq.service"
|
ynh_remove_systemd_config --service="$app_sidekiq"
|
||||||
ynh_secure_remove --file="/etc/tmpfiles.d/${app}.conf"
|
ynh_secure_remove --file="/etc/tmpfiles.d/${app}.conf"
|
||||||
ynh_secure_remove --file="/etc/systemd/system/${app}.target"
|
ynh_secure_remove --file="/etc/systemd/system/${app}.target"
|
||||||
ynh_secure_remove --file="/run/${app}"
|
ynh_secure_remove --file="/run/${app}"
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# REMOVE SERVICE FROM ADMIN PANEL
|
|
||||||
#=================================================
|
|
||||||
|
|
||||||
if yunohost service status | grep -q $app
|
|
||||||
then
|
|
||||||
echo "Remove $app service"
|
|
||||||
yunohost service remove $app
|
|
||||||
fi
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# REMOVE THE POSTGRESQL DATABASE
|
# REMOVE THE POSTGRESQL DATABASE
|
||||||
#=================================================
|
#=================================================
|
||||||
if [ $can_remove_db -eq 1 ]; then
|
ynh_script_progression --message="Removing the PostgreSQL database..."
|
||||||
ynh_script_progression --message="Remove database"
|
|
||||||
# Remove a database if it exists, along with the associated user
|
# Remove a database if it exists, along with the associated user
|
||||||
ynh_psql_remove_db $db_name $db_name
|
ynh_psql_remove_db --db_user=$db_user --db_name=$db_name
|
||||||
fi
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# REMOVE DEPENDENCIES
|
# REMOVE APP MAIN DIR
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Remove app dependencies" --weight=10
|
ynh_script_progression --message="Removing app main directory..."
|
||||||
# Remove metapackage and its dependencies
|
|
||||||
ynh_remove_app_dependencies
|
# Remove the app directory securely
|
||||||
|
ynh_secure_remove --file="$final_path"
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# REMOVE NGINX CONFIGURATION
|
# REMOVE NGINX CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Remove nginx config"
|
ynh_script_progression --message="Removing NGINX web server configuration..."
|
||||||
|
|
||||||
# Remove the dedicated nginx config
|
# Remove the dedicated NGINX config
|
||||||
ynh_remove_nginx_config
|
ynh_remove_nginx_config
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# REMOVE DEPENDENCIES
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Removing dependencies..." --weight=10
|
||||||
|
|
||||||
|
# Remove metapackage and its dependencies
|
||||||
|
ynh_remove_ruby
|
||||||
|
ynh_remove_nodejs
|
||||||
|
ynh_remove_app_dependencies
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# GENERIC FINALIZATION
|
# GENERIC FINALIZATION
|
||||||
#=================================================
|
#=================================================
|
||||||
# REMOVE DEDICATED USER
|
# REMOVE DEDICATED USER
|
||||||
#=================================================
|
#=================================================
|
||||||
if [ $can_remove_user -eq 1 ]; then
|
ynh_script_progression --message="Removing the dedicated system user..."
|
||||||
ynh_script_progression --message="Remove $app user"
|
|
||||||
# Delete a system user
|
# Delete a system user
|
||||||
# because we use gpg, sometimes rogue processes (gpg an d dirmngr) stays a bit,
|
ynh_system_user_delete --username=$app
|
||||||
# preventing the deletion of the user. Hence we kill all processes belonging to $app
|
|
||||||
pkill -9 -u `id -u $app`
|
|
||||||
ynh_system_user_delete $app
|
|
||||||
fi
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# REMOVE RUBY
|
# END OF SCRIPT
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Remove ruby (if this is the last app using it)"
|
|
||||||
source $final_path/Experimental_helpers/ynh_install_ruby/ynh_install_ruby
|
|
||||||
ynh_remove_ruby
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# REMOVE NODE
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Remove nodejs for this app"
|
|
||||||
ynh_remove_nodejs
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# REMOVE APP MAIN DIR
|
|
||||||
#=================================================
|
|
||||||
if [ $can_remove_home -eq 1 ]; then
|
|
||||||
ynh_script_progression --message="Remove $final_path"
|
|
||||||
# Remove the app directory securely
|
|
||||||
ynh_secure_remove "$final_path"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
ynh_script_progression --message="Removal of $app completed"
|
||||||
|
|
172
scripts/restore
172
scripts/restore
|
@ -1,33 +1,30 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
## vars for remove script
|
|
||||||
can_remove_db=0
|
|
||||||
can_remove_home=0
|
|
||||||
can_remove_user=0
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# GENERIC START
|
# GENERIC START
|
||||||
#=================================================
|
#=================================================
|
||||||
# IMPORT GENERIC HELPERS
|
# IMPORT GENERIC HELPERS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
|
# Keep this path for calling _common.sh inside the execution's context of backup and restore scripts
|
||||||
source ../settings/scripts/_common.sh
|
source ../settings/scripts/_common.sh
|
||||||
|
source ../settings/scripts/ynh_install_ruby__2
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
pushd $(readlink -f ../settings/scripts)
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# MANAGE SCRIPT FAILURE
|
# MANAGE SCRIPT FAILURE
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
# Exit if an error occurs during the execution of the script
|
ynh_clean_setup () {
|
||||||
ynh_clean_setup() {
|
|
||||||
ynh_clean_check_starting
|
ynh_clean_check_starting
|
||||||
}
|
}
|
||||||
|
# Exit if an error occurs during the execution of the script
|
||||||
ynh_abort_if_errors
|
ynh_abort_if_errors
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# LOAD SETTINGS
|
# LOAD SETTINGS
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Loading settings..."
|
ynh_script_progression --message="Loading installation settings..."
|
||||||
|
|
||||||
app=$YNH_APP_INSTANCE_NAME
|
app=$YNH_APP_INSTANCE_NAME
|
||||||
|
|
||||||
|
@ -43,103 +40,110 @@ ynh_script_progression --message="Validating restoration parameters..."
|
||||||
|
|
||||||
test ! -d $final_path \
|
test ! -d $final_path \
|
||||||
|| ynh_die --message="There is already a directory: $final_path "
|
|| ynh_die --message="There is already a directory: $final_path "
|
||||||
can_remove_home=1
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# Reinstall dependencies
|
# STANDARD RESTORATION STEPS
|
||||||
|
#=================================================
|
||||||
|
# RESTORE THE NGINX CONFIGURATION
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Restoring the NGINX web server configuration..."
|
||||||
|
|
||||||
|
ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# RECREATE THE DEDICATED USER
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Recreating the dedicated system user..."
|
||||||
|
|
||||||
|
# Create the dedicated user (if not existing)
|
||||||
|
ynh_system_user_create --username=$app --home_dir=$final_path
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# RESTORE THE APP MAIN DIR
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Restoring the app main directory..."
|
||||||
|
|
||||||
|
ynh_restore_file --origin_path="$final_path"
|
||||||
|
|
||||||
|
chmod 750 "$final_path"
|
||||||
|
chmod -R o-rwx "$final_path"
|
||||||
|
chown -R $app:www-data "$final_path"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# SPECIFIC RESTORATION
|
||||||
|
#=================================================
|
||||||
|
# REINSTALL DEPENDENCIES
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Reinstalling dependencies..." --weight=5
|
ynh_script_progression --message="Reinstalling dependencies..." --weight=5
|
||||||
|
|
||||||
ynh_install_app_dependencies $pkg_dependencies $ruby_build_dependencies
|
ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies $build_pkg_dependencies
|
||||||
|
ynh_exec_warn_less ynh_install_ruby --ruby_version=$ruby_version
|
||||||
# now that we have psql for sure, test db existence
|
ynh_exec_warn_less ynh_install_nodejs --nodejs_version=$nodejs_version
|
||||||
ynh_script_progression --message="Checking DB availability" --weight=1
|
|
||||||
ynh_psql_database_exists --database $app && ynh_die --message="There is already a database: $app"
|
|
||||||
can_remove_db=1
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# Restoring dedicated USER
|
# RESTORE THE POSTGRESQL DATABASE
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Restoring user..." --weight=1
|
ynh_script_progression --message="Restoring the PostgreSQL database..."
|
||||||
|
|
||||||
ynh_system_user_create --username=$app --home_dir=$final_path --use_shell
|
ynh_psql_test_if_first_run
|
||||||
can_remove_user=1
|
ynh_psql_setup_db --db_user=$db_user --db_name=$db_name --db_pwd=$db_pwd
|
||||||
mkdir -p $final_path
|
ynh_psql_execute_file_as_root --file="./db.sql" --database="$db_name"
|
||||||
chmod 0750 $final_path -R
|
|
||||||
chown $app:www-data $final_path
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# INSTALL RVM, RUBY AND NODE FOR CURRENT USER
|
# BUILD APP
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Reinstalling rbenv and ruby..." --weight=10
|
ynh_script_progression --message="Building app..." --weight=40
|
||||||
source ./install_ruby
|
|
||||||
ynh_script_progression --message="Reinstalling node" --weight=10
|
|
||||||
ynh_install_nodejs --nodejs_version=14
|
|
||||||
|
|
||||||
#=================================================
|
pushd $final_path/live
|
||||||
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
ynh_use_ruby
|
||||||
#=================================================
|
ynh_use_nodejs
|
||||||
# Download, check integrity, unucompress and patch the source from app.src
|
ynh_gem install bundler:$bundler_version
|
||||||
pushd $final_path
|
ynh_exec_as $app $ynh_ruby_load_path $ld_preload script/configure_bundler
|
||||||
ynh_script_progression --message="Download the sources..." --weight=5
|
ynh_exec_as $app $ynh_ruby_load_path $ld_preload bin/bundle install --full-index --with=postgresql
|
||||||
ynh_exec_warn_less sudo -u $app git clone https://github.com/diaspora/diaspora.git -b $current_tag
|
|
||||||
popd
|
popd
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# Restore files
|
# RESTORE SYSTEMD
|
||||||
#=================================================
|
#=================================================
|
||||||
ynh_script_progression --message="Restore the files" --weight=5
|
ynh_script_progression --message="Restoring the systemd configuration..."
|
||||||
ynh_restore_file --origin_path=/var/www/diaspora/diaspora/config/database.yml
|
|
||||||
ynh_restore_file --origin_path=/var/www/diaspora/diaspora/config/diaspora.yml
|
|
||||||
ynh_restore_file --not_mandatory --origin_path=/var/www/diaspora/diaspora/public/uploads/
|
|
||||||
# restoring somewhere postgres can read
|
|
||||||
ynh_restore_file --origin_path=/var/www/diaspora/backup/diaspora.dump --dest_path=/tmp/diaspora.dump
|
|
||||||
|
|
||||||
|
ynh_restore_file --origin_path="/etc/systemd/system/$app-web.service"
|
||||||
|
ynh_restore_file --origin_path="/etc/systemd/system/$app-sidekiq.service"
|
||||||
|
ynh_restore_file --origin_path="/etc/systemd/system/$app-streaming.service"
|
||||||
|
systemctl enable "$app_web" "$app_sidekiq" "$app.target" --quiet
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# Restore database
|
# INTEGRATE SERVICE IN YUNOHOST
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Recreating and restoring database..." --weight=5
|
|
||||||
db_name=$(ynh_sanitize_dbid $app)
|
|
||||||
ynh_psql_test_if_first_run
|
|
||||||
db_pass=$(ynh_app_setting_get --app=$app --key=psqlpwd)
|
|
||||||
ynh_psql_setup_db --db_user=$db_name --db_name=$db_name --db_pwd=$db_pass
|
|
||||||
ynh_script_progression --message="Restoring database..."
|
|
||||||
sudo -u postgres pg_restore \
|
|
||||||
--single-transaction \
|
|
||||||
--dbname=$app \
|
|
||||||
/tmp/diaspora.dump
|
|
||||||
ynh_secure_remove --file=/tmp/diaspora.dump
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# Bundle the ruby app
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Precompile assets..." --weight=5
|
|
||||||
source ./bundle_app
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# Restore nginx conf files
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Recreate nginx config from source"
|
|
||||||
|
|
||||||
ynh_add_nginx_config
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# Restore services
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Restore services..."
|
|
||||||
|
|
||||||
source ./create_services
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# ADVERTISE SERVICE IN ADMIN PANEL
|
|
||||||
#=================================================
|
#=================================================
|
||||||
|
ynh_script_progression --message="Integrating service in YunoHost..."
|
||||||
|
|
||||||
yunohost service add $app.target \
|
yunohost service add $app.target \
|
||||||
--log $final_path/diaspora/log/production.log \
|
--log $final_path/live/log/production.log \
|
||||||
$final_path/diaspora/log/unicorn-stderr.log\
|
$final_path/live/log/unicorn-stderr.log\
|
||||||
$final_path/diaspora/log/unicorn-stdout.log\
|
$final_path/live/log/unicorn-stdout.log\
|
||||||
$final_path/diaspora/log/sidekiq.log\
|
$final_path/live/log/sidekiq.log\
|
||||||
--description "Diaspora service (unicorn web and sidekiq)"
|
--description "Diaspora service (unicorn web and sidekiq)"
|
||||||
|
|
||||||
popd
|
#=================================================
|
||||||
|
# START SYSTEMD SERVICE
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Starting a systemd service..."
|
||||||
|
|
||||||
|
systemctl restart ${app}.target
|
||||||
|
ynh_systemd_action --service_name=${app}_web.service --action=restart --log_path="$final_path/live/log/production.log" --line_match="successfully configured the federation library"
|
||||||
|
ynh_systemd_action --service_name=${app}_sidekiq.service --action=restart --log_path="systemd" --line_match="Running in ruby"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# GENERIC FINALIZATION
|
||||||
|
#=================================================
|
||||||
|
# RELOAD NGINX
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Reloading NGINX web server..."
|
||||||
|
|
||||||
|
ynh_systemd_action --service_name=nginx --action=reload
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# END OF SCRIPT
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
ynh_script_progression --message="Restoration completed for $app"
|
||||||
|
|
229
scripts/upgrade
229
scripts/upgrade
|
@ -6,8 +6,8 @@
|
||||||
# IMPORT GENERIC HELPERS
|
# IMPORT GENERIC HELPERS
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
||||||
# IMPORT GENERIC HELPERS
|
|
||||||
source _common.sh
|
source _common.sh
|
||||||
|
source ynh_install_ruby__2
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
|
@ -17,56 +17,53 @@ ynh_script_progression --message="Loading installation settings..."
|
||||||
|
|
||||||
app=$YNH_APP_INSTANCE_NAME
|
app=$YNH_APP_INSTANCE_NAME
|
||||||
|
|
||||||
# Retrieve arguments
|
domain=$(ynh_app_setting_get --app=$app --key=domain)
|
||||||
domain=$(ynh_app_setting_get --app $app --key domain)
|
admin=$(ynh_app_setting_get --app=$app --key=admin)
|
||||||
admin=$(ynh_app_setting_get --app $app --key admin)
|
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
||||||
final_path=$(ynh_app_setting_get --app $app --key final_path)
|
|
||||||
|
|
||||||
ynh_clean_setup() {
|
#=================================================
|
||||||
|
# CHECK VERSION
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Checking version..."
|
||||||
|
|
||||||
|
upgrade_type=$(ynh_check_app_version_changed)
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Backing up the app before upgrading (may take a while)..."
|
||||||
|
|
||||||
|
# Backup the current version of the app
|
||||||
|
ynh_backup_before_upgrade
|
||||||
|
ynh_clean_setup () {
|
||||||
ynh_clean_check_starting
|
ynh_clean_check_starting
|
||||||
|
# Restore it if the upgrade fails
|
||||||
|
ynh_restore_upgradebackup
|
||||||
}
|
}
|
||||||
|
# Exit if an error occurs during the execution of the script
|
||||||
ynh_abort_if_errors
|
ynh_abort_if_errors
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# Migrate legacy permissions to new system
|
# STANDARD UPGRADE STEPS
|
||||||
#=================================================
|
#=================================================
|
||||||
if ynh_legacy_permissions_exists
|
# STOP SYSTEMD SERVICE
|
||||||
then
|
#=================================================
|
||||||
|
ynh_script_progression --message="Stopping a systemd service..."
|
||||||
|
|
||||||
|
systemctl stop $app.target
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# ENSURE DOWNWARD COMPATIBILITY
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Ensuring downward compatibility..."
|
||||||
|
|
||||||
|
# Cleaning legacy permissions
|
||||||
|
if ynh_legacy_permissions_exists; then
|
||||||
ynh_legacy_permissions_delete_all
|
ynh_legacy_permissions_delete_all
|
||||||
|
|
||||||
ynh_app_setting_delete --app=$app --key=is_public
|
ynh_app_setting_delete --app=$app --key=is_public
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# Check upgrade type
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Check upgrade type..."
|
|
||||||
|
|
||||||
upgrade_type=$(ynh_check_app_version_changed)
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# Stop services
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Stop services..."
|
|
||||||
|
|
||||||
systemctl stop $app.target
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# INSTALL DEPENDENCIES
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Installing dependencies..."
|
|
||||||
|
|
||||||
ynh_install_app_dependencies $pkg_dependencies $ruby_build_dependencies
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# INSTALL NODE
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Install node"
|
|
||||||
ynh_install_nodejs --nodejs_version=14
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# ENSURE DOWNWARD COMPATIBILITY
|
|
||||||
#=================================================
|
|
||||||
# migrate from rvm to rbenv
|
# migrate from rvm to rbenv
|
||||||
ynh_script_progression --message="Remove rvm if needed..."
|
ynh_script_progression --message="Remove rvm if needed..."
|
||||||
if [ -e "$final_path/.rvm" ]; then
|
if [ -e "$final_path/.rvm" ]; then
|
||||||
|
@ -74,8 +71,6 @@ if [ -e "$final_path/.rvm" ]; then
|
||||||
rvm implode --force
|
rvm implode --force
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
ynh_script_progression --message="Install ruby"
|
|
||||||
source ./install_ruby
|
|
||||||
|
|
||||||
# remove old gpg keys for rvm
|
# remove old gpg keys for rvm
|
||||||
ynh_script_progression --message="Remove old rvm keys..."
|
ynh_script_progression --message="Remove old rvm keys..."
|
||||||
|
@ -90,47 +85,135 @@ if gpg --list-keys piotr.kuczynski@gmail.com >/dev/null 2>&1; then
|
||||||
ynh_secure_remove "$final_path/piotr.kuczynski@gmail.com.pgp"
|
ynh_secure_remove "$final_path/piotr.kuczynski@gmail.com.pgp"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$upgrade_type" == "UPGRADE_APP" ];
|
#=================================================
|
||||||
then
|
# CREATE DEDICATED USER
|
||||||
upgrade_message="Upgrading this app and upstream to $current_tag"
|
#=================================================
|
||||||
else
|
ynh_script_progression --message="Making sure dedicated system user exists..."
|
||||||
upgrade_message="Shallow upgrade of yunohost app"
|
|
||||||
fi
|
# Create a dedicated user (if not existing)
|
||||||
ynh_script_progression --message=$upgrade_message
|
ynh_system_user_create --username=$app --home_dir=$final_path
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
||||||
|
#=================================================
|
||||||
|
|
||||||
if [ "$upgrade_type" == "UPGRADE_APP" ]
|
if [ "$upgrade_type" == "UPGRADE_APP" ]
|
||||||
then
|
then
|
||||||
# revert local change to .ruby-version
|
ynh_script_progression --message="Upgrading source files..."
|
||||||
pushd $final_path/diaspora
|
|
||||||
git checkout -- .ruby-version
|
# Download, check integrity, uncompress and patch the source from app.src
|
||||||
git fetch
|
ynh_setup_source --dest_dir="$final_path/live"
|
||||||
git checkout $current_tag
|
|
||||||
popd
|
|
||||||
source ./bundle_app
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#=================================================
|
chmod 750 "$final_path"
|
||||||
# ADVERTISE SERVICE IN ADMIN PANEL
|
chmod -R o-rwx "$final_path"
|
||||||
#=================================================
|
chown -R $app:www-data "$final_path"
|
||||||
yunohost service add $app.target \
|
|
||||||
--log $final_path/diaspora/log/production.log \
|
|
||||||
$final_path/diaspora/log/unicorn-stderr.log\
|
|
||||||
$final_path/diaspora/log/unicorn-stdout.log\
|
|
||||||
$final_path/diaspora/log/sidekiq.log\
|
|
||||||
--description "Diaspora service (unicorn web and sidekiq)"
|
|
||||||
|
|
||||||
#=================================================
|
|
||||||
# restart services
|
|
||||||
#=================================================
|
|
||||||
ynh_script_progression --message="Recreate and start services..."
|
|
||||||
|
|
||||||
source ./create_services
|
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
# NGINX CONFIGURATION
|
# NGINX CONFIGURATION
|
||||||
#=================================================
|
#=================================================
|
||||||
# Create a dedicated nginx config
|
ynh_script_progression --message="Upgrading NGINX web server configuration..."
|
||||||
ynh_script_progression --message="configure nginx..." --weight=1
|
|
||||||
|
|
||||||
|
# Create a dedicated NGINX config
|
||||||
ynh_add_nginx_config
|
ynh_add_nginx_config
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# UPGRADE DEPENDENCIES
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Upgrading dependencies..."
|
||||||
|
|
||||||
|
ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies $build_pkg_dependencies
|
||||||
|
ynh_exec_warn_less ynh_install_ruby --ruby_version=$ruby_version
|
||||||
|
ynh_exec_warn_less ynh_install_nodejs --nodejs_version=$nodejs_version
|
||||||
|
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# SPECIFIC UPGRADE
|
||||||
|
#=================================================
|
||||||
|
# BUILD APP
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Building app..." --weight=40
|
||||||
|
|
||||||
|
pushd $final_path/live
|
||||||
|
ynh_use_ruby
|
||||||
|
ynh_use_nodejs
|
||||||
|
ynh_gem install bundler:$bundler_version
|
||||||
|
ynh_exec_as $app $ynh_ruby_load_path $ld_preload script/configure_bundler
|
||||||
|
ynh_exec_as $app $ynh_ruby_load_path $ld_preload bin/bundle install --full-index --with=postgresql
|
||||||
|
ynh_exec_warn_less ynh_exec_as $app RAILS_ENV=production $ynh_ruby_load_path $ld_preload bin/bundle exec rake db:migrate 2>&1
|
||||||
|
ynh_exec_warn_less ynh_exec_as $app RAILS_ENV=production $ynh_ruby_load_path $ld_preload bin/rake assets:precompile 2>&1
|
||||||
|
popd
|
||||||
|
|
||||||
|
ynh_exec_warn_less ynh_install_app_dependencies $pkg_dependencies
|
||||||
|
ynh_package_autoremove
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# UPDATE A CONFIG FILE
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Updating a configuration file..." --weight=1
|
||||||
|
|
||||||
|
ynh_add_config --template="../conf/diaspora.yml" --destination="$final_path/live/config/diaspora.yml"
|
||||||
|
ynh_add_config --template="../conf/database.yml" --destination="$final_path/live/config/database.yml"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# SETUP SYSTEMD
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Upgrading systemd configuration..." --weight=1
|
||||||
|
|
||||||
|
ynh_add_systemd_config --service="${app}_sidekiq" --template="diaspora_sidekiq.service"
|
||||||
|
ynh_add_systemd_config --service="${app}_web" --template="diaspora_web.service"
|
||||||
|
|
||||||
|
# tmp files
|
||||||
|
install -T --mode=0644 -v ../conf/diaspora.tmpfiles.d /etc/tmpfiles.d/${app}.conf
|
||||||
|
ynh_replace_string --match_string=__APP__ --replace_string=$app --target_file=/etc/tmpfiles.d/${app}.conf
|
||||||
|
|
||||||
|
# target unit
|
||||||
|
install -T --mode=0644 -v ../conf/diaspora.target /etc/systemd/system/${app}.target
|
||||||
|
ynh_replace_string --match_string=__APP__ --replace_string=$app --target_file=/etc/systemd/system/${app}.target
|
||||||
|
|
||||||
|
# reload, create, enable and start stuff
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemd-tmpfiles --create
|
||||||
|
systemctl enable ${app}.target --quiet
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# GENERIC FINALIZATION
|
||||||
|
#=================================================
|
||||||
|
# INTEGRATE SERVICE IN YUNOHOST
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Integrating service in YunoHost..."
|
||||||
|
|
||||||
|
yunohost service add $app.target \
|
||||||
|
--log $final_path/live/log/production.log \
|
||||||
|
$final_path/live/log/unicorn-stderr.log\
|
||||||
|
$final_path/live/log/unicorn-stdout.log\
|
||||||
|
$final_path/live/log/sidekiq.log\
|
||||||
|
--description "Diaspora service (unicorn web and sidekiq)"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# START SYSTEMD SERVICE
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Starting a systemd service..."
|
||||||
|
|
||||||
|
systemctl restart ${app}.target
|
||||||
|
ynh_systemd_action --service_name=${app}_web.service \
|
||||||
|
--action=restart\
|
||||||
|
--log_path="$final_path/live/log/production.log" \
|
||||||
|
--line_match="successfully configured the federation library"
|
||||||
|
ynh_systemd_action --service_name=${app}_sidekiq.service \
|
||||||
|
--action=restart\
|
||||||
|
--log_path="systemd" \
|
||||||
|
--line_match="Running in ruby"
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# RELOAD NGINX
|
||||||
|
#=================================================
|
||||||
|
ynh_script_progression --message="Reloading NGINX web server..."
|
||||||
|
|
||||||
|
ynh_systemd_action --service_name=nginx --action=reload
|
||||||
|
|
||||||
|
#=================================================
|
||||||
|
# END OF SCRIPT
|
||||||
|
#=================================================
|
||||||
|
|
||||||
|
ynh_script_progression --message="Upgrade of $app completed"
|
||||||
|
|
310
scripts/ynh_install_ruby__2
Normal file
310
scripts/ynh_install_ruby__2
Normal file
|
@ -0,0 +1,310 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
ynh_ruby_try_bash_extension() {
|
||||||
|
if [ -x src/configure ]; then
|
||||||
|
src/configure && make -C src || {
|
||||||
|
ynh_print_info --message="Optional bash extension failed to build, but things will still work normally."
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
rbenv_install_dir="/opt/rbenv"
|
||||||
|
ruby_version_path="$rbenv_install_dir/versions"
|
||||||
|
# RBENV_ROOT is the directory of rbenv, it needs to be loaded as a environment variable.
|
||||||
|
export RBENV_ROOT="$rbenv_install_dir"
|
||||||
|
export rbenv_root="$rbenv_install_dir"
|
||||||
|
|
||||||
|
ruby_dependencies=""
|
||||||
|
build_ruby_dependencies="libjemalloc-dev curl build-essential libreadline-dev zlib1g-dev libsqlite3-dev libssl-dev libxml2-dev libxslt-dev autoconf automake bison libtool"
|
||||||
|
pkg_dependencies="$pkg_dependencies $ruby_dependencies"
|
||||||
|
build_pkg_dependencies="$build_pkg_dependencies $build_ruby_dependencies"
|
||||||
|
|
||||||
|
# Load the version of Ruby for an app, and set variables.
|
||||||
|
#
|
||||||
|
# ynh_use_ruby has to be used in any app scripts before using Ruby for the first time.
|
||||||
|
# This helper will provide alias and variables to use in your scripts.
|
||||||
|
#
|
||||||
|
# To use gem or Ruby, use the alias `ynh_gem` and `ynh_ruby`
|
||||||
|
# Those alias will use the correct version installed for the app
|
||||||
|
# For example: use `ynh_gem install` instead of `gem install`
|
||||||
|
#
|
||||||
|
# With `sudo` or `ynh_exec_as`, use instead the fallback variables `$ynh_gem` and `$ynh_ruby`
|
||||||
|
# And propagate $PATH to sudo with $ynh_ruby_load_path
|
||||||
|
# Exemple: `ynh_exec_as $app $ynh_ruby_load_path $ynh_gem install`
|
||||||
|
#
|
||||||
|
# $PATH contains the path of the requested version of Ruby.
|
||||||
|
# However, $PATH is duplicated into $ruby_path to outlast any manipulation of $PATH
|
||||||
|
# You can use the variable `$ynh_ruby_load_path` to quickly load your Ruby version
|
||||||
|
# in $PATH for an usage into a separate script.
|
||||||
|
# Exemple: $ynh_ruby_load_path $final_path/script_that_use_gem.sh`
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Finally, to start a Ruby service with the correct version, 2 solutions
|
||||||
|
# Either the app is dependent of Ruby or gem, but does not called it directly.
|
||||||
|
# In such situation, you need to load PATH
|
||||||
|
# `Environment="__YNH_RUBY_LOAD_PATH__"`
|
||||||
|
# `ExecStart=__FINALPATH__/my_app`
|
||||||
|
# You will replace __YNH_RUBY_LOAD_PATH__ with $ynh_ruby_load_path
|
||||||
|
#
|
||||||
|
# Or Ruby start the app directly, then you don't need to load the PATH variable
|
||||||
|
# `ExecStart=__YNH_RUBY__ my_app run`
|
||||||
|
# You will replace __YNH_RUBY__ with $ynh_ruby
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# one other variable is also available
|
||||||
|
# - $ruby_path: The absolute path to Ruby binaries for the chosen version.
|
||||||
|
#
|
||||||
|
# usage: ynh_use_ruby
|
||||||
|
#
|
||||||
|
# Requires YunoHost version 3.2.2 or higher.
|
||||||
|
ynh_use_ruby () {
|
||||||
|
ruby_version=$(ynh_app_setting_get --app=$app --key=ruby_version)
|
||||||
|
|
||||||
|
# Get the absolute path of this version of Ruby
|
||||||
|
ruby_path="$ruby_version_path/$YNH_APP_INSTANCE_NAME/bin"
|
||||||
|
|
||||||
|
# Allow alias to be used into bash script
|
||||||
|
shopt -s expand_aliases
|
||||||
|
|
||||||
|
# Create an alias for the specific version of Ruby and a variable as fallback
|
||||||
|
ynh_ruby="$ruby_path/ruby"
|
||||||
|
alias ynh_ruby="$ynh_ruby"
|
||||||
|
# And gem
|
||||||
|
ynh_gem="$ruby_path/gem"
|
||||||
|
alias ynh_gem="$ynh_gem"
|
||||||
|
|
||||||
|
# Load the path of this version of Ruby in $PATH
|
||||||
|
if [[ :$PATH: != *":$ruby_path"* ]]; then
|
||||||
|
PATH="$ruby_path:$PATH"
|
||||||
|
fi
|
||||||
|
# Create an alias to easily load the PATH
|
||||||
|
ynh_ruby_load_path="PATH=$PATH"
|
||||||
|
|
||||||
|
# Sets the local application-specific Ruby version
|
||||||
|
pushd $final_path
|
||||||
|
$rbenv_install_dir/bin/rbenv local $ruby_version
|
||||||
|
popd
|
||||||
|
}
|
||||||
|
|
||||||
|
# Install a specific version of Ruby
|
||||||
|
#
|
||||||
|
# ynh_install_ruby will install the version of Ruby provided as argument by using rbenv.
|
||||||
|
#
|
||||||
|
# This helper creates a /etc/profile.d/rbenv.sh that configures PATH environment for rbenv
|
||||||
|
# for every LOGIN user, hence your user must have a defined shell (as opposed to /usr/sbin/nologin)
|
||||||
|
#
|
||||||
|
# Don't forget to execute ruby-dependent command in a login environment
|
||||||
|
# (e.g. sudo --login option)
|
||||||
|
# When not possible (e.g. in systemd service definition), please use direct path
|
||||||
|
# to rbenv shims (e.g. $RBENV_ROOT/shims/bundle)
|
||||||
|
#
|
||||||
|
# usage: ynh_install_ruby --ruby_version=ruby_version
|
||||||
|
# | arg: -v, --ruby_version= - Version of ruby to install.
|
||||||
|
#
|
||||||
|
# Requires YunoHost version 3.2.2 or higher.
|
||||||
|
ynh_install_ruby () {
|
||||||
|
# Declare an array to define the options of this helper.
|
||||||
|
local legacy_args=v
|
||||||
|
local -A args_array=( [v]=ruby_version= )
|
||||||
|
local ruby_version
|
||||||
|
# Manage arguments with getopts
|
||||||
|
ynh_handle_getopts_args "$@"
|
||||||
|
|
||||||
|
# Load rbenv path in PATH
|
||||||
|
local CLEAR_PATH="$rbenv_install_dir/bin:$PATH"
|
||||||
|
|
||||||
|
# Remove /usr/local/bin in PATH in case of Ruby prior installation
|
||||||
|
PATH=$(echo $CLEAR_PATH | sed 's@/usr/local/bin:@@')
|
||||||
|
|
||||||
|
# Move an existing Ruby binary, to avoid to block rbenv
|
||||||
|
test -x /usr/bin/ruby && mv /usr/bin/ruby /usr/bin/ruby_rbenv
|
||||||
|
|
||||||
|
# Install or update rbenv
|
||||||
|
rbenv="$(command -v rbenv $rbenv_install_dir/bin/rbenv | grep "$rbenv_install_dir/bin/rbenv" | head -1)"
|
||||||
|
if [ -n "$rbenv" ]; then
|
||||||
|
ynh_print_info --message="rbenv already seems installed in \`$rbenv'."
|
||||||
|
pushd "${rbenv%/*/*}"
|
||||||
|
if git remote -v 2>/dev/null | grep "https://github.com/rbenv/rbenv.git"; then
|
||||||
|
ynh_print_info --message="Trying to update with git..."
|
||||||
|
git pull -q --tags origin master
|
||||||
|
ynh_ruby_try_bash_extension
|
||||||
|
else
|
||||||
|
ynh_print_info --message="Reinstalling rbenv with git..."
|
||||||
|
cd ..
|
||||||
|
ynh_secure_remove --file=$rbenv_install_dir
|
||||||
|
mkdir -p $rbenv_install_dir
|
||||||
|
cd $rbenv_install_dir
|
||||||
|
git init -q
|
||||||
|
git remote add -f -t master origin https://github.com/rbenv/rbenv.git > /dev/null 2>&1
|
||||||
|
git checkout -q -b master origin/master
|
||||||
|
ynh_ruby_try_bash_extension
|
||||||
|
rbenv=$rbenv_install_dir/bin/rbenv
|
||||||
|
fi
|
||||||
|
popd
|
||||||
|
else
|
||||||
|
ynh_print_info --message="Installing rbenv with git..."
|
||||||
|
mkdir -p $rbenv_install_dir
|
||||||
|
pushd $rbenv_install_dir
|
||||||
|
git init -q
|
||||||
|
git remote add -f -t master origin https://github.com/rbenv/rbenv.git > /dev/null 2>&1
|
||||||
|
git checkout -q -b master origin/master
|
||||||
|
ynh_ruby_try_bash_extension
|
||||||
|
rbenv=$rbenv_install_dir/bin/rbenv
|
||||||
|
popd
|
||||||
|
fi
|
||||||
|
|
||||||
|
ruby_build="$(command -v "$rbenv_install_dir"/plugins/*/bin/rbenv-install rbenv-install | head -1)"
|
||||||
|
if [ -n "$ruby_build" ]; then
|
||||||
|
ynh_print_info --message="\`rbenv install' command already available in \`$ruby_build'."
|
||||||
|
pushd "${ruby_build%/*/*}"
|
||||||
|
if git remote -v 2>/dev/null | grep "https://github.com/rbenv/ruby-build.git"; then
|
||||||
|
ynh_print_info --message="Trying to update rbenv with git..."
|
||||||
|
git pull -q origin master
|
||||||
|
fi
|
||||||
|
popd
|
||||||
|
else
|
||||||
|
ynh_print_info --message="Installing ruby-build with git..."
|
||||||
|
mkdir -p "${rbenv_install_dir}/plugins"
|
||||||
|
git clone -q https://github.com/rbenv/ruby-build.git "${rbenv_install_dir}/plugins/ruby-build"
|
||||||
|
fi
|
||||||
|
|
||||||
|
rbenv_alias="$(command -v "$rbenv_install_dir"/plugins/*/bin/rbenv-alias rbenv-alias | head -1)"
|
||||||
|
if [ -n "$rbenv_alias" ]; then
|
||||||
|
ynh_print_info --message="\`rbenv alias' command already available in \`$rbenv_alias'."
|
||||||
|
pushd "${rbenv_alias%/*/*}"
|
||||||
|
if git remote -v 2>/dev/null | grep "https://github.com/tpope/rbenv-aliases.git"; then
|
||||||
|
ynh_print_info --message="Trying to update rbenv-aliases with git..."
|
||||||
|
git pull -q origin master
|
||||||
|
fi
|
||||||
|
popd
|
||||||
|
else
|
||||||
|
ynh_print_info --message="Installing rbenv-aliases with git..."
|
||||||
|
mkdir -p "${rbenv_install_dir}/plugins"
|
||||||
|
git clone -q https://github.com/tpope/rbenv-aliases.git "${rbenv_install_dir}/plugins/rbenv-aliase"
|
||||||
|
fi
|
||||||
|
|
||||||
|
rbenv_latest="$(command -v "$rbenv_install_dir"/plugins/*/bin/rbenv-latest rbenv-latest | head -1)"
|
||||||
|
if [ -n "$rbenv_latest" ]; then
|
||||||
|
ynh_print_info --message="\`rbenv latest' command already available in \`$rbenv_latest'."
|
||||||
|
pushd "${rbenv_latest%/*/*}"
|
||||||
|
if git remote -v 2>/dev/null | grep "https://github.com/momo-lab/xxenv-latest.git"; then
|
||||||
|
ynh_print_info --message="Trying to update xxenv-latest with git..."
|
||||||
|
git pull -q origin master
|
||||||
|
fi
|
||||||
|
popd
|
||||||
|
else
|
||||||
|
ynh_print_info --message="Installing xxenv-latest with git..."
|
||||||
|
mkdir -p "${rbenv_install_dir}/plugins"
|
||||||
|
git clone -q https://github.com/momo-lab/xxenv-latest.git "${rbenv_install_dir}/plugins/xxenv-latest"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Enable caching
|
||||||
|
mkdir -p "${rbenv_install_dir}/cache"
|
||||||
|
|
||||||
|
# Create shims directory if needed
|
||||||
|
mkdir -p "${rbenv_install_dir}/shims"
|
||||||
|
|
||||||
|
# Restore /usr/local/bin in PATH
|
||||||
|
PATH=$CLEAR_PATH
|
||||||
|
|
||||||
|
# And replace the old Ruby binary
|
||||||
|
test -x /usr/bin/ruby_rbenv && mv /usr/bin/ruby_rbenv /usr/bin/ruby
|
||||||
|
|
||||||
|
# Install the requested version of Ruby
|
||||||
|
local final_ruby_version=$(rbenv latest --print $ruby_version)
|
||||||
|
if ! [ -n "$final_ruby_version" ]; then
|
||||||
|
final_ruby_version=$ruby_version
|
||||||
|
fi
|
||||||
|
ynh_print_info --message="Installing Ruby-$final_ruby_version"
|
||||||
|
CONFIGURE_OPTS="--disable-install-doc --with-jemalloc" MAKE_OPTS="-j2" rbenv install --skip-existing $final_ruby_version > /dev/null 2>&1
|
||||||
|
|
||||||
|
# Store ruby_version into the config of this app
|
||||||
|
ynh_app_setting_set --app=$YNH_APP_INSTANCE_NAME --key=ruby_version --value=$final_ruby_version
|
||||||
|
|
||||||
|
# Remove app virtualenv
|
||||||
|
if `rbenv alias --list | grep --quiet "$YNH_APP_INSTANCE_NAME " 1>/dev/null 2>&1`
|
||||||
|
then
|
||||||
|
rbenv alias $YNH_APP_INSTANCE_NAME --remove
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create app virtualenv
|
||||||
|
rbenv alias $YNH_APP_INSTANCE_NAME $final_ruby_version
|
||||||
|
|
||||||
|
# Cleanup Ruby versions
|
||||||
|
ynh_cleanup_ruby
|
||||||
|
|
||||||
|
# Set environment for Ruby users
|
||||||
|
echo "#rbenv
|
||||||
|
export RBENV_ROOT=$rbenv_install_dir
|
||||||
|
export PATH=\"$rbenv_install_dir/bin:$PATH\"
|
||||||
|
eval \"\$(rbenv init -)\"
|
||||||
|
#rbenv" > /etc/profile.d/rbenv.sh
|
||||||
|
|
||||||
|
# Load the environment
|
||||||
|
eval "$(rbenv init -)"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Remove the version of Ruby used by the app.
|
||||||
|
#
|
||||||
|
# This helper will also cleanup Ruby versions
|
||||||
|
#
|
||||||
|
# usage: ynh_remove_ruby
|
||||||
|
ynh_remove_ruby () {
|
||||||
|
local ruby_version=$(ynh_app_setting_get --app=$YNH_APP_INSTANCE_NAME --key=ruby_version)
|
||||||
|
|
||||||
|
# Load rbenv path in PATH
|
||||||
|
local CLEAR_PATH="$rbenv_install_dir/bin:$PATH"
|
||||||
|
|
||||||
|
# Remove /usr/local/bin in PATH in case of Ruby prior installation
|
||||||
|
PATH=$(echo $CLEAR_PATH | sed 's@/usr/local/bin:@@')
|
||||||
|
|
||||||
|
rbenv alias $YNH_APP_INSTANCE_NAME --remove
|
||||||
|
|
||||||
|
# Remove the line for this app
|
||||||
|
ynh_app_setting_delete --app=$YNH_APP_INSTANCE_NAME --key=ruby_version
|
||||||
|
|
||||||
|
# Cleanup Ruby versions
|
||||||
|
ynh_cleanup_ruby
|
||||||
|
}
|
||||||
|
|
||||||
|
# Remove no more needed versions of Ruby used by the app.
|
||||||
|
#
|
||||||
|
# This helper will check what Ruby version are no more required,
|
||||||
|
# and uninstall them
|
||||||
|
# If no app uses Ruby, rbenv will be also removed.
|
||||||
|
#
|
||||||
|
# usage: ynh_cleanup_ruby
|
||||||
|
ynh_cleanup_ruby () {
|
||||||
|
|
||||||
|
# List required Ruby versions
|
||||||
|
local installed_apps=$(yunohost app list | grep -oP 'id: \K.*$')
|
||||||
|
local required_ruby_versions=""
|
||||||
|
for installed_app in $installed_apps
|
||||||
|
do
|
||||||
|
local installed_app_ruby_version=$(ynh_app_setting_get --app=$installed_app --key="ruby_version")
|
||||||
|
if [[ $installed_app_ruby_version ]]
|
||||||
|
then
|
||||||
|
required_ruby_versions="${installed_app_ruby_version}\n${required_ruby_versions}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Remove no more needed Ruby versions
|
||||||
|
local installed_ruby_versions=$(rbenv versions --bare --skip-aliases | grep -Ev '/')
|
||||||
|
for installed_ruby_version in $installed_ruby_versions
|
||||||
|
do
|
||||||
|
if ! `echo ${required_ruby_versions} | grep "${installed_ruby_version}" 1>/dev/null 2>&1`
|
||||||
|
then
|
||||||
|
ynh_print_info --message="Removing of Ruby-$installed_ruby_version"
|
||||||
|
$rbenv_install_dir/bin/rbenv uninstall --force $installed_ruby_version
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# If none Ruby version is required
|
||||||
|
if [[ ! $required_ruby_versions ]]
|
||||||
|
then
|
||||||
|
# Remove rbenv environment configuration
|
||||||
|
ynh_print_info --message="Removing of rbenv-$rbenv_version"
|
||||||
|
ynh_secure_remove --file="$rbenv_install_dir"
|
||||||
|
ynh_secure_remove --file="/etc/profile.d/rbenv.sh"
|
||||||
|
fi
|
||||||
|
}
|
Loading…
Reference in a new issue