1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/pleroma_ynh.git synced 2024-09-03 20:15:59 +02:00

Merge pull request #34 from YunoHost-Apps/testing

Testing
This commit is contained in:
yalh76 2019-02-12 13:12:13 +01:00 committed by GitHub
commit 14578de5fa
12 changed files with 146 additions and 442 deletions

View file

@ -32,7 +32,7 @@
Level 3=auto
# Level 4: If the app supports LDAP and SSOwat, turn level 4 to '1' and add a link to an issue or a part of your code to show it.
# If the app does not use LDAP nor SSOwat, and can't use them, turn level 4 to 'na' and explain as well.
#Application doesn't support LDAP
#https://github.com/YunoHost-Apps/pleroma_ynh/issues/28
Level 4=na
Level 5=auto
Level 6=auto

View file

@ -1,318 +0,0 @@
# This file is responsible for configuring your application
# and its dependencies with the aid of the Mix.Config module.
#
# This configuration file is loaded before any dependency and
# is restricted to this project.
use Mix.Config
# General application configuration
config :pleroma, ecto_repos: [Pleroma.Repo]
config :pleroma, Pleroma.Repo, types: Pleroma.PostgresTypes
config :pleroma, Pleroma.Captcha,
enabled: false,
seconds_valid: 60,
method: Pleroma.Captcha.Kocaptcha
config :pleroma, :hackney_pools,
federation: [
max_connections: 50,
timeout: 150_000
],
media: [
max_connections: 50,
timeout: 150_000
],
upload: [
max_connections: 25,
timeout: 300_000
]
config :pleroma, Pleroma.Captcha.Kocaptcha, endpoint: "https://captcha.kotobank.ch"
# Upload configuration
config :pleroma, Pleroma.Upload,
uploader: Pleroma.Uploaders.Local,
filters: [],
proxy_remote: false,
proxy_opts: [
redirect_on_failure: false,
max_body_length: 25 * 1_048_576,
http: [
follow_redirect: true,
pool: :upload
]
]
config :pleroma, Pleroma.Uploaders.Local, uploads: "uploads"
config :pleroma, Pleroma.Uploaders.S3,
bucket: nil,
public_endpoint: "https://s3.amazonaws.com"
config :pleroma, Pleroma.Uploaders.MDII,
cgi: "https://mdii.sakura.ne.jp/mdii-post.cgi",
files: "https://mdii.sakura.ne.jp"
config :pleroma, :emoji, shortcode_globs: ["/emoji/custom/**/*.png"]
config :pleroma, :uri_schemes,
valid_schemes: [
"https",
"http",
"dat",
"dweb",
"gopher",
"ipfs",
"ipns",
"irc",
"ircs",
"magnet",
"mailto",
"mumble",
"ssb",
"xmpp"
]
websocket_config = [
path: "/websocket",
serializer: [
{Phoenix.Socket.V1.JSONSerializer, "~> 1.0.0"},
{Phoenix.Socket.V2.JSONSerializer, "~> 2.0.0"}
],
timeout: 60_000,
transport_log: false,
compress: false
]
# Configures the endpoint
config :pleroma, Pleroma.Web.Endpoint,
url: [host: "localhost"],
http: [
dispatch: [
{:_,
[
{"/api/v1/streaming", Elixir.Pleroma.Web.MastodonAPI.WebsocketHandler, []},
{"/socket/websocket", Phoenix.Endpoint.CowboyWebSocket,
{nil, {Pleroma.Web.Endpoint, Pleroma.Web.UserSocket, websocket_config}}},
{:_, Plug.Adapters.Cowboy.Handler, {Pleroma.Web.Endpoint, []}}
]}
]
],
protocol: "https",
secret_key_base: "aK4Abxf29xU9TTDKre9coZPUgevcVCFQJe/5xP/7Lt4BEif6idBIbjupVbOrbKxl",
signing_salt: "CqaoopA2",
render_errors: [view: Pleroma.Web.ErrorView, accepts: ~w(json)],
pubsub: [name: Pleroma.PubSub, adapter: Phoenix.PubSub.PG2],
secure_cookie_flag: true
# Configures Elixir's Logger
config :logger, :console,
format: "$time $metadata[$level] $message\n",
metadata: [:request_id]
config :logger, :ex_syslogger,
level: :debug,
ident: "Pleroma",
format: "$date $time $metadata[$level] $message",
metadata: [:request_id]
config :mime, :types, %{
"application/xml" => ["xml"],
"application/xrd+xml" => ["xrd+xml"],
"application/jrd+json" => ["jrd+json"],
"application/activity+json" => ["activity+json"],
"application/ld+json" => ["activity+json"]
}
config :pleroma, :websub, Pleroma.Web.Websub
config :pleroma, :ostatus, Pleroma.Web.OStatus
config :pleroma, :httpoison, Pleroma.HTTP
config :tesla, adapter: Tesla.Adapter.Hackney
# Configures http settings, upstream proxy etc.
config :pleroma, :http, proxy_url: nil
config :pleroma, :instance,
name: "Pleroma",
email: "example@example.com",
description: "A Pleroma instance, an alternative fediverse server",
limit: 5_000,
remote_limit: 100_000,
upload_limit: 16_000_000,
avatar_upload_limit: 2_000_000,
background_upload_limit: 4_000_000,
banner_upload_limit: 4_000_000,
registrations_open: true,
federating: true,
federation_reachability_timeout_days: 7,
allow_relay: true,
rewrite_policy: Pleroma.Web.ActivityPub.MRF.NoOpPolicy,
public: true,
quarantined_instances: [],
managed_config: true,
static_dir: "instance/static/",
allowed_post_formats: [
"text/plain",
"text/html",
"text/markdown"
],
finmoji_enabled: true,
mrf_transparency: true,
autofollowed_nicknames: [],
max_pinned_statuses: 1,
no_attachment_links: false
config :pleroma, :markup,
# XXX - unfortunately, inline images must be enabled by default right now, because
# of custom emoji. Issue #275 discusses defanging that somehow.
allow_inline_images: true,
allow_headings: false,
allow_tables: false,
allow_fonts: false,
scrub_policy: [
Pleroma.HTML.Transform.MediaProxy,
Pleroma.HTML.Scrubber.Default
]
config :pleroma, :frontend_configurations,
pleroma_fe: %{
theme: "pleroma-dark",
logo: "/static/logo.png",
background: "/images/city.jpg",
redirectRootNoLogin: "/main/all",
redirectRootLogin: "/main/friends",
showInstanceSpecificPanel: true,
scopeOptionsEnabled: false,
formattingOptionsEnabled: false,
collapseMessageWithSubject: false,
hidePostStats: false,
hideUserStats: false,
scopeCopy: true,
subjectLineBehavior: "email",
alwaysShowSubjectInput: true
}
config :pleroma, :activitypub,
accept_blocks: true,
unfollow_blocked: true,
outgoing_blocks: true,
follow_handshake_timeout: 500
config :pleroma, :user, deny_follow_blocked: true
config :pleroma, :mrf_normalize_markup, scrub_policy: Pleroma.HTML.Scrubber.Default
config :pleroma, :mrf_rejectnonpublic,
allow_followersonly: false,
allow_direct: false
config :pleroma, :mrf_hellthread, threshold: 10
config :pleroma, :mrf_simple,
media_removal: [],
media_nsfw: [],
federated_timeline_removal: [],
reject: [],
accept: []
config :pleroma, :rich_media, enabled: true
config :pleroma, :media_proxy,
enabled: false,
proxy_opts: [
redirect_on_failure: false,
max_body_length: 25 * 1_048_576,
http: [
follow_redirect: true,
pool: :media
]
]
config :pleroma, :chat, enabled: true
config :ecto, json_library: Jason
config :phoenix, :format_encoders, json: Jason
config :pleroma, :gopher,
enabled: false,
ip: {0, 0, 0, 0},
port: 9999
config :pleroma, Pleroma.Web.Metadata, providers: [], unfurl_nsfw: false
config :pleroma, :suggestions,
enabled: false,
third_party_engine:
"http://vinayaka.distsn.org/cgi-bin/vinayaka-user-match-suggestions-api.cgi?{{host}}+{{user}}",
timeout: 300_000,
limit: 23,
web: "https://vinayaka.distsn.org/?{{host}}+{{user}}"
config :pleroma, :http_security,
enabled: true,
sts: false,
sts_max_age: 31_536_000,
ct_max_age: 2_592_000,
referrer_policy: "same-origin"
config :cors_plug,
max_age: 86_400,
methods: ["POST", "PUT", "DELETE", "GET", "PATCH", "OPTIONS"],
expose: [
"Link",
"X-RateLimit-Reset",
"X-RateLimit-Limit",
"X-RateLimit-Remaining",
"X-Request-Id",
"Idempotency-Key"
],
credentials: true,
headers: ["Authorization", "Content-Type", "Idempotency-Key"]
config :pleroma, Pleroma.User,
restricted_nicknames: [
".well-known",
"~",
"about",
"activities",
"api",
"auth",
"dev",
"friend-requests",
"inbox",
"internal",
"main",
"media",
"nodeinfo",
"notice",
"oauth",
"objects",
"ostatus_subscribe",
"pleroma",
"proxy",
"push",
"registration",
"relay",
"settings",
"status",
"tag",
"user-search",
"users",
"web"
]
config :pleroma, Pleroma.Web.Federator, max_jobs: 50
config :pleroma, Pleroma.Web.Federator.RetryQueue,
enabled: false,
max_jobs: 20,
initial_timeout: 30,
max_retries: 5
# Import environment specific config. This must remain at the bottom
# of this file so it overrides the configuration defined above.
import_config "#{Mix.env()}.exs"

View file

@ -1,63 +0,0 @@
use Mix.Config
# For production, we often load configuration from external
# sources, such as your system environment. For this reason,
# you won't find the :http configuration below, but set inside
# Pleroma.Web.Endpoint.load_from_system_env/1 dynamically.
# Any dynamic configuration should be moved to such function.
#
# Don't forget to configure the url host to something meaningful,
# Phoenix uses this information when generating URLs.
#
# Finally, we also include the path to a cache manifest
# containing the digested version of static files. This
# manifest is generated by the mix phoenix.digest task
# which you typically run after static files are built.
#config :pleroma, Pleroma.Web.Endpoint,
#http: [port: 4000],
#protocol: "http"
# Do not print debug messages in production
config :logger, level: :info
# ## SSL Support
#
# To get SSL working, you will need to add the `https` key
# to the previous section and set your `:url` port to 443:
#
# config :pleroma, Pleroma.Web.Endpoint,
# ...
# url: [host: "example.com", port: 443],
# https: [:inet6,
# port: 443,
# keyfile: System.get_env("SOME_APP_SSL_KEY_PATH"),
# certfile: System.get_env("SOME_APP_SSL_CERT_PATH")]
#
# Where those two env variables return an absolute path to
# the key and cert in disk or a relative path inside priv,
# for example "priv/ssl/server.key".
#
# We also recommend setting `force_ssl`, ensuring no data is
# ever sent via http, always redirecting to https:
#
# config :pleroma, Pleroma.Web.Endpoint,
# force_ssl: [hsts: true]
#
# Check `Plug.SSL` for all available options in `force_ssl`.
# ## Using releases
#
# If you are doing OTP releases, you need to instruct Phoenix
# to start the server for all endpoints:
#
# config :phoenix, :serve_endpoints, true
#
# Alternatively, you can configure exactly which server to
# start per endpoint:
#
# config :pleroma, Pleroma.Web.Endpoint, server: true
#
# Finally import the config/prod.secret.exs
# which should be versioned separately.
import_config "prod.secret.exs"

View file

@ -12,17 +12,22 @@ ExecStart=/usr/bin/mix phx.server
ExecReload=/bin/kill $MAINPID
KillMode=process
Restart=on-failure
StandardOutput=syslog
StandardError=syslog
; Some security directives.
; Use private /tmp and /var/tmp folders inside a new file system namespace, which are discarded after the process stops.
PrivateTmp=true
; The /home, /root, and /run/user folders can not be accessed by this service anymore. If your Pleroma user has its home folder in one of the restricted places, or use one of these folders as its working directory, you have to set this to false.
ProtectHome=true
; Mount /usr, /boot, and /etc as read-only for processes invoked by this service.
ProtectSystem=full
; Sets up a new /dev mount for the process and only adds API pseudo devices like /dev/null, /dev/zero or /dev/random but not physical devices. Disabled by default because it may not work on devices like the Raspberry Pi.
PrivateDevices=false
; Ensures that the service process and all its children can never gain new privileges through execve().
NoNewPrivileges=true
; Drops the sysadmin capability from the daemon.
CapabilityBoundingSet=~CAP_SYS_ADMIN
[Install]
WantedBy=multi-user.target

View file

@ -14,7 +14,7 @@
"email": "anmol@datamol.org"
},
"requirements": {
"yunohost": ">= 2.7.9"
"yunohost": ">= 3.4"
},
"multi_instance": true,
"services": [
@ -26,8 +26,8 @@
"name": "domain",
"type": "domain",
"ask": {
"en": "Choose a domain name for pleroma",
"fr": "Choisissez un nom de domaine pour pleroma"
"en": "Choose a domain name for Pleroma",
"fr": "Choisissez un nom de domaine pour Pleroma"
},
"example": "example.com"
},
@ -64,6 +64,7 @@
},
{
"name": "name",
"type": "string",
"ask": {
"en": "Choose a name for your Pleroma instance",
"fr": "Choisissez un nom pour votre instance Pleroma"
@ -91,6 +92,7 @@
},
{
"name": "size",
"type": "string",
"ask": {
"en": "Select the cache size. If you did not enabled media-cache in above option then this option will have no effect",
"fr": "Sélectionner la taille du cache. Si vous n'avez pas activé le cache média ci-dessus, cette option n'aura aucun effet"

View file

@ -1,13 +1,13 @@
#!/bin/bash
# ============= FUTURE YUNOHOST HELPER =============
# Delete a file checksum from the app settings
#
# $app should be defined when calling this helper
#
# usage: ynh_remove_file_checksum file
# | arg: file - The file for which the checksum will be deleted
ynh_delete_file_checksum () {
local checksum_setting_name=checksum_${1//[\/ ]/_} # Replace all '/' and ' ' by '_'
ynh_app_setting_delete $app $checksum_setting_name
}
#=================================================
# PERSONNAL HELPERS
#=================================================
#=================================================
# EXPERIMENTAL HELPERS
#=================================================
#=================================================
# FUTUR OFFICIAL HELPERS
#=================================================

View file

@ -24,6 +24,7 @@ ynh_abort_if_errors
#=================================================
# LOAD SETTINGS
#=================================================
ynh_print_info "Load settings"
app=$YNH_APP_INSTANCE_NAME
@ -37,12 +38,14 @@ cache=$(ynh_app_setting_get "$app" cache)
#=================================================
# BACKUP THE APP MAIN DIR
#=================================================
ynh_print_info "Backup the app main dir"
ynh_backup "$final_path"
#=================================================
# BACKUP THE NGINX CONFIGURATION
#=================================================
ynh_print_info "Backup nginx configuration"
ynh_backup "/etc/nginx/conf.d/$domain.d/$app.conf"
@ -54,12 +57,14 @@ fi
#=================================================
# BACKUP THE PHP-FPM CONFIGURATION
#=================================================
ynh_print_info "Backup php-fpm configuration"
#ynh_backup "/etc/php5/fpm/pool.d/$app.conf"
#=================================================
# BACKUP THE POSTGRESQL DATABASE
#=================================================
ynh_print_info "Backup the postgresql database"
ynh_psql_dump_db "$db_name" > db.sql
@ -68,12 +73,14 @@ ynh_psql_dump_db "$db_name" > db.sql
#=================================================
# BACKUP LOGROTATE
#=================================================
ynh_print_info "Backup logrotate configuration"
ynh_backup "/etc/logrotate.d/$app"
#=================================================
# BACKUP SYSTEMD
#=================================================
ynh_print_info "Backup systemd configuration"
ynh_backup "/etc/systemd/system/$app.service"
@ -82,3 +89,9 @@ ynh_backup "/etc/systemd/system/$app.service"
#=================================================
#ynh_backup "/etc/cron.d/$app"
#=================================================
# END OF SCRIPT
#=================================================
ynh_print_info "Backup script completed. Please wait for YunoHost to create the backup."

View file

@ -13,6 +13,7 @@ source /usr/share/yunohost/helpers
#=================================================
# RETRIEVE ARGUMENTS
#=================================================
ynh_print_info "Retrieve arguments from the manifest"
old_domain=$YNH_APP_OLD_DOMAIN
old_path=$YNH_APP_OLD_PATH
@ -25,6 +26,7 @@ app=$YNH_APP_INSTANCE_NAME
#=================================================
# LOAD SETTINGS
#=================================================
ynh_print_info "Load settings"
# Needed for helper "ynh_add_nginx_config"
final_path=$(ynh_app_setting_get $app final_path)
@ -36,6 +38,7 @@ final_path=$(ynh_app_setting_get $app final_path)
#=================================================
# CHECK THE SYNTAX OF THE PATHS
#=================================================
ynh_print_info "Check the syntax of the paths"
test -n "$old_path" || old_path="/"
test -n "$new_path" || new_path="/"
@ -63,6 +66,7 @@ fi
#=================================================
# MODIFY URL IN NGINX CONF
#=================================================
ynh_print_info "Modify url in nginx configuration"
nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf
@ -106,7 +110,7 @@ ynh_replace_string "$old_domain" "$new_domain" "$final_path/$app/config/prod.sec
# START SERVICE
#=================================================
ynh_systemd_action --action=start --service_name=$app
ynh_systemd_action --action=start --service_name=$app --log_path=systemd --line_match="Running Pleroma.Web.Endpoint"
#=================================================
# STORE THE CONFIG FILE CHECKSUM
@ -123,5 +127,12 @@ ynh_store_file_checksum "$final_path/$app/config/prod.secret.exs"
#=================================================
# RELOAD NGINX
#=================================================
ynh_print_info "Reload nginx"
systemctl reload nginx
#=================================================
# END OF SCRIPT
#=================================================
ynh_print_info "Change of url completed"

View file

@ -24,6 +24,7 @@ ynh_abort_if_errors
#=================================================
# RETRIEVE ARGUMENTS FROM THE MANIFEST
#=================================================
ynh_print_info "Retrieve arguments from the manifest ..."
domain=$YNH_APP_ARG_DOMAIN
path_url="/"
@ -59,6 +60,7 @@ app=$YNH_APP_INSTANCE_NAME
#=================================================
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
#=================================================
ynh_print_info "Validating arguments ..."
### If the app uses nginx as web server (written in HTML/PHP in most cases), the final path should be "/var/www/$app".
### If the app provides an internal web server (or uses another application server such as uwsgi), the final path should be "/opt/yunohost/$app"
@ -74,6 +76,7 @@ ynh_webpath_register $app $domain $path_url
#=================================================
# STORE SETTINGS FROM MANIFEST
#=================================================
ynh_print_info "Store settings from manifest ..."
ynh_app_setting_set $app domain $domain
ynh_app_setting_set $app path $path_url
@ -91,6 +94,7 @@ ynh_app_setting_set "$app" random_key "$random_key"
#=================================================
# FIND AND OPEN A PORT
#=================================================
ynh_print_info "Configuring firewall ..."
### Use these lines if you have to open a port for the application
### `ynh_find_port` will find the first available port starting from the given port.
@ -100,12 +104,13 @@ ynh_app_setting_set "$app" random_key "$random_key"
# Find a free port
port=$(ynh_find_port 8095)
# Open this port
#yunohost firewall allow --no-upnp TCP $port 2>&1
#ynh_exec_warn_less yunohost firewall allow --no-upnp TCP $port
ynh_app_setting_set $app port $port
#=================================================
# INSTALL DEPENDENCIES
#=================================================
ynh_print_info "Installing dependencies ..."
### `ynh_install_app_dependencies` allows you to add any "apt" dependencies to the package.
### Those deb packages will be installed as dependencies of this package.
@ -158,6 +163,7 @@ CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";"
#=================================================
# DOWNLOAD, CHECK AND UNPACK SOURCE
#=================================================
ynh_print_info "Setting up source files ..."
### `ynh_setup_source` is used to install an app from a zip or tar.gz file,
### downloaded from an upstream source, like a git repository.
@ -171,6 +177,7 @@ git clone https://git.pleroma.social/pleroma/pleroma "$final_path/$app"
#=================================================
# NGINX CONFIGURATION
#=================================================
ynh_print_info "Configuring nginx ..."
### `ynh_add_nginx_config` will use the file conf/nginx.conf
@ -191,6 +198,7 @@ fi
#=================================================
# CREATE DEDICATED USER
#=================================================
ynh_print_info "Configuring system user ..."
# Create a system user
ynh_system_user_create "$app" "$final_path"
@ -198,6 +206,7 @@ ynh_system_user_create "$app" "$final_path"
#=================================================
# PHP-FPM CONFIGURATION
#=================================================
ynh_print_info "Configuring php-fpm ..."
### `ynh_add_fpm_config` is used to set up a PHP config.
### You can remove it if your app doesn't use PHP.
@ -244,12 +253,6 @@ else
ynh_replace_string "__REG__" "false" "$final_path/$app/config/prod.secret.exs"
fi
#Desactivate default frontend
cp -f ../conf/config.exs "$final_path/$app/config/config.exs"
#Desactivate Pleroma.Web.Endpoint
cp -f ../conf/prod.exs "$final_path/$app/config/prod.exs"
#=================================================
# MAKE SETUP
#=================================================
@ -269,12 +272,13 @@ pushd $final_path/$app
#Generate key pair
sudo -u "$app" MIX_ENV=prod mix web_push.gen.keypair >> "config/prod.secret.exs"
ynh_replace_string "administrator@example.com" "__ADMIN_EMAIL__" "$final_path/$app/config/prod.secret.exs"
ynh_replace_string "administrator@example.com" "$admin_email" "$final_path/$app/config/prod.secret.exs"
popd
#=================================================
# SETUP SYSTEMD
#=================================================
ynh_print_info "Configuring a systemd service ..."
### `ynh_systemd_config` is used to configure a systemd script for an app.
### It can be used for apps that use sysvinit (with adaptation) or systemd.
@ -303,6 +307,7 @@ ynh_add_systemd_config
#chown -R $app: $final_path
# Set the app as temporarily public for curl call
ynh_print_info "Configuring ssowat ..."
#ynh_app_setting_set $app skipped_uris "/"
# Reload SSOwat config
#yunohost app ssowatconf
@ -311,6 +316,7 @@ ynh_add_systemd_config
#systemctl reload nginx
# Installation with curl
ynh_print_info "Finalizing install ..."
#ynh_local_curl "/INSTALL_PATH" "key1=value1" "key2=value2" "key3=value3"
# Remove the public access
@ -355,6 +361,7 @@ chown -R "$app":"$app" "$final_path"
#=================================================
# SETUP LOGROTATE
#=================================================
ynh_print_info "Configuring log rotation ..."
### `ynh_use_logrotate` is used to configure a logrotate configuration for the logs of this app.
### Use this helper only if there is effectively a log file for this app.
@ -386,6 +393,7 @@ yunohost service add $app --description "$app daemon for Pleroma" --log "/var/lo
#=================================================
# SETUP SSOWAT
#=================================================
ynh_print_info "Configuring SSOwat ..."
# Make app public if necessary
if [ $is_public -eq 1 ]
@ -397,6 +405,7 @@ fi
#=================================================
# RELOAD NGINX
#=================================================
ynh_print_info "Reloading nginx ..."
systemctl reload nginx
@ -405,3 +414,9 @@ systemctl reload nginx
#=================================================
ynh_systemd_action --action=start --service_name=$app --log_path=systemd --line_match="Running Pleroma.Web.Endpoint"
#=================================================
# END OF SCRIPT
#=================================================
ynh_print_info "Installation completed"

View file

@ -13,6 +13,7 @@ source /usr/share/yunohost/helpers
#=================================================
# LOAD SETTINGS
#=================================================
ynh_print_info "Load settings"
app=$YNH_APP_INSTANCE_NAME
@ -31,7 +32,7 @@ cache=$(ynh_app_setting_get "$app" cache)
# Remove a service from the admin panel, added by `yunohost service add`
if yunohost service status | grep -q $app
then
echo "Remove $app service"
ynh_print_info "Remove $app service"
yunohost service remove $app
fi
@ -44,6 +45,7 @@ ynh_systemd_action --action=stop --service_name=$app
#=================================================
# STOP AND REMOVE SERVICE
#=================================================
ynh_print_info "Stop and remove the service"
# Remove the dedicated systemd config
ynh_remove_systemd_config
@ -51,6 +53,7 @@ ynh_remove_systemd_config
#=================================================
# REMOVE THE POSTGRESQL DATABASE
#=================================================
ynh_print_info "Remove the postgresql database"
ynh_psql_execute_as_root "\connect $db_name
SELECT pg_terminate_backend (pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = '$db_name';"
@ -61,14 +64,16 @@ ynh_psql_remove_db "$db_name" "$app"
#=================================================
# REMOVE DEPENDENCIES
#=================================================
ynh_print_info "Remove dependencies"
# Remove metapackage and its dependencies
ynh_remove_app_dependencies
rm -f "/etc/apt/sources.list.d/erlang-solutions.list"
ynh_secure_remove "/etc/apt/sources.list.d/erlang-solutions.list"
#=================================================
# REMOVE APP MAIN DIR
#=================================================
ynh_print_info "Remove app main directory"
# Remove the app directory securely
ynh_secure_remove "$final_path"
@ -76,6 +81,7 @@ ynh_secure_remove "$final_path"
#=================================================
# REMOVE NGINX CONFIGURATION
#=================================================
ynh_print_info "Remove nginx configuration"
# Remove the dedicated nginx config
ynh_remove_nginx_config
@ -84,6 +90,7 @@ ynh_secure_remove "/etc/nginx/conf.d/$app-cache.conf"
#=================================================
# REMOVE PHP-FPM CONFIGURATION
#=================================================
ynh_print_info "Remove php-fpm configuration"
# Remove the dedicated php-fpm config
#ynh_remove_fpm_config
@ -91,6 +98,7 @@ ynh_secure_remove "/etc/nginx/conf.d/$app-cache.conf"
#=================================================
# REMOVE LOGROTATE CONFIGURATION
#=================================================
ynh_print_info "Remove logrotate configuration"
# Remove the app-specific logrotate config
ynh_remove_logrotate
@ -98,6 +106,7 @@ ynh_remove_logrotate
#=================================================
# CLOSE A PORT
#=================================================
ynh_print_info "Close ports"
if yunohost firewall list | grep -q "\- $port$"
then
@ -125,6 +134,13 @@ ynh_secure_remove "/var/log/$app/"
#=================================================
# REMOVE DEDICATED USER
#=================================================
ynh_print_info "Remove the dedicated user"
# Delete a system user
ynh_system_user_delete $app
#=================================================
# END OF SCRIPT
#=================================================
ynh_print_info "Deletion completed"

View file

@ -24,6 +24,7 @@ ynh_abort_if_errors
#=================================================
# LOAD SETTINGS
#=================================================
ynh_print_info "Load settings"
app=$YNH_APP_INSTANCE_NAME
@ -60,27 +61,14 @@ fi
#=================================================
# RESTORE THE APP MAIN DIR
#=================================================
ynh_print_info "Restore the app main directory"
ynh_restore_file "$final_path"
#=================================================
# RESTORE THE POSTGRESQL DATABASE
#=================================================
ynh_install_app_dependencies postgresql postgresql-contrib
ynh_psql_test_if_first_run
ynh_psql_create_user "$app" "$db_pwd"
ynh_psql_execute_as_root \
"CREATE DATABASE $db_name ENCODING 'UTF8' LC_COLLATE='C' LC_CTYPE='C' template=template0 OWNER $app;"
ynh_psql_execute_as_root "\connect $db_name
CREATE EXTENSION IF NOT EXISTS unaccent;CREATE EXTENSION IF NOT EXISTS pg_trgm;"
ynh_psql_execute_as_root "\connect $db_name
CREATE EXTENSION IF NOT EXISTS unaccent;CREATE EXTENSION IF NOT EXISTS citext;"
ynh_psql_execute_file_as_root ./db.sql "$db_name"
#=================================================
# RECREATE THE DEDICATED USER
#=================================================
ynh_print_info "Recreate the dedicated user"
# Create the dedicated user (if not existing)
ynh_system_user_create "$app" "$final_path"
@ -96,13 +84,14 @@ chown -R "$app":"$app" "$final_path"
# RESTORE THE PHP-FPM CONFIGURATION
#=================================================
#ynh_restore_file "/etc/php5/fpm/pool.d/$app.conf"
#ynh_restore_file "/etc/php/7.0/fpm/pool.d/$app.conf"
#=================================================
# SPECIFIC RESTORATION
#=================================================
# REINSTALL DEPENDENCIES
#=================================================
ynh_print_info "Reinstall dependencies"
# Add erlang for Debian Jessie
@ -116,12 +105,28 @@ sudo wget https://packages.erlang-solutions.com/debian/erlang_solutions.asc
sudo apt-key add erlang_solutions.asc
sudo rm erlang_solutions.asc
# install dependencies
# Define and install dependencies
ynh_install_app_dependencies git build-essential openssl ssh sudo postgresql postgresql-contrib elixir erlang-dev erlang-parsetools erlang-xmerl erlang-tools
#=================================================
# RESTORE THE POSTGRESQL DATABASE
#=================================================
ynh_print_info "Restore the postgresql database"
ynh_psql_test_if_first_run
ynh_psql_create_user "$app" "$db_pwd"
ynh_psql_execute_as_root \
"CREATE DATABASE $db_name ENCODING 'UTF8' LC_COLLATE='C' LC_CTYPE='C' template=template0 OWNER $app;"
ynh_psql_execute_as_root "\connect $db_name
CREATE EXTENSION IF NOT EXISTS unaccent;CREATE EXTENSION IF NOT EXISTS pg_trgm;"
ynh_psql_execute_as_root "\connect $db_name
CREATE EXTENSION IF NOT EXISTS unaccent;CREATE EXTENSION IF NOT EXISTS citext;"
ynh_psql_execute_file_as_root ./db.sql "$db_name"
#=================================================
# RESTORE SYSTEMD
#=================================================
ynh_print_info "Restore the systemd configuration"
ynh_restore_file "/etc/systemd/system/$app.service"
systemctl enable $app.service
@ -150,7 +155,9 @@ ynh_restore_file "/etc/logrotate.d/$app"
#=================================================
# RELOAD NGINX AND PHP-FPM
#=================================================
ynh_print_info "Reload nginx and php-fpm"
#systemctl reload php7.0-fpm
systemctl reload nginx
#=================================================
@ -158,3 +165,9 @@ systemctl reload nginx
#=================================================
ynh_systemd_action --action=start --service_name=$app --log_path=systemd --line_match="Running Pleroma.Web.Endpoint"
#=================================================
# END OF SCRIPT
#=================================================
ynh_print_info "Restoration completed"

View file

@ -13,6 +13,7 @@ source /usr/share/yunohost/helpers
#=================================================
# LOAD SETTINGS
#=================================================
ynh_print_info "Load settings"
app=$YNH_APP_INSTANCE_NAME
@ -46,6 +47,7 @@ fi
#=================================================
# ENSURE DOWNWARD COMPATIBILITY
#=================================================
ynh_print_info "Ensure downward compatibility"
# Fix is_public as a boolean value
if [ "$is_public" = "Yes" ]; then
@ -71,6 +73,7 @@ fi
#=================================================
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
#=================================================
ynh_print_info "Backup the app before upgrading"
# Backup the current version of the app
ynh_backup_before_upgrade
@ -100,14 +103,19 @@ path_url=$(ynh_normalize_url_path $path_url)
#=================================================
# DOWNLOAD, CHECK AND UNPACK SOURCE
#=================================================
ynh_print_info "Download, check and unpack source"
# Download, check integrity, uncompress and patch the source from app.src
#ynh_setup_source "$final_path/$app"
( cd $final_path/$app && git pull )
pushd $final_path/$app
git reset --hard
git pull --quiet
popd
#=================================================
# NGINX CONFIGURATION
#=================================================
ynh_print_info "Reconfigure nginx"
# Create a dedicated nginx config
ynh_add_nginx_config
@ -128,6 +136,7 @@ fi
#=================================================
# UPGRADE DEPENDENCIES
#=================================================
ynh_print_info "Upgrade dependencies"
# Add erlang for Debian Jessie
@ -147,6 +156,7 @@ ynh_install_app_dependencies git build-essential openssl ssh sudo postgresql pos
#=================================================
# CREATE DEDICATED USER
#=================================================
ynh_print_info "Create a dedicated user"
# Create a dedicated user (if not existing)
ynh_system_user_create "$app" "$final_path"
@ -154,6 +164,7 @@ ynh_system_user_create "$app" "$final_path"
#=================================================
# PHP-FPM CONFIGURATION
#=================================================
ynh_print_info "Reconfigure php-fpm"
# Create a dedicated php-fpm config
#ynh_add_fpm_config
@ -189,22 +200,6 @@ else
ynh_replace_string "__REG__" "false" "$final_path/$app/config/prod.secret.exs"
fi
#Desactivate default frontend
cp -f ../conf/config.exs "$final_path/$app/config/config.exs"
#Desactivate Pleroma.Web.Endpoint
cp -f ../conf/prod.exs "$final_path/$app/config/prod.exs"
#=================================================
# CONFIGURE
#=================================================
#Desactivate default frontend
cp -f ../conf/config.exs "$final_path/$app/config/config.exs"
#Desactivate Pleroma.Web.Endpoint
cp -f ../conf/prod.exs "$final_path/$app/config/prod.exs"
#=================================================
# MAKE UPGRADE
#=================================================
@ -214,6 +209,10 @@ chown -R "$app":"$app" "$final_path"
pushd $final_path/$app
sudo -u "$app" MIX_ENV=prod mix deps.get
sudo -u "$app" MIX_ENV=prod mix ecto.migrate --force
#Generate key pair
sudo -u "$app" MIX_ENV=prod mix web_push.gen.keypair >> "config/prod.secret.exs"
ynh_replace_string "administrator@example.com" "$admin_email" "$final_path/$app/config/prod.secret.exs"
popd
### Verify the checksum of a file, stored by `ynh_store_file_checksum` in the install script.
@ -235,6 +234,7 @@ fi
#=================================================
# SETUP LOGROTATE
#=================================================
ynh_print_info "Reconfigure logrotate"
# Use logrotate to manage app-specific logfile(s)
ynh_use_logrotate --non-append
@ -242,6 +242,8 @@ ynh_use_logrotate --non-append
#=================================================
# SETUP SYSTEMD
#=================================================
ynh_print_info "Reconfigure systemd"
# Create a dedicated systemd config
ynh_add_systemd_config
@ -258,6 +260,7 @@ chown -R "$app":"$app" "$final_path"
#=================================================
# SETUP SSOWAT
#=================================================
ynh_print_info "Reconfigure SSOwat"
# Make app public if necessary
if [ $is_public -eq 1 ]
@ -269,6 +272,7 @@ fi
#=================================================
# RELOAD NGINX
#=================================================
ynh_print_info "Reload nginx"
systemctl reload nginx
@ -277,3 +281,9 @@ systemctl reload nginx
#=================================================
ynh_systemd_action --action=start --service_name=$app --log_path=systemd --line_match="Running Pleroma.Web.Endpoint"
#=================================================
# END OF SCRIPT
#=================================================
ynh_print_info "Upgrade completed"