user/freescout: new aport #338
6 changed files with 213 additions and 0 deletions
64
user/freescout/APKBUILD
Normal file
64
user/freescout/APKBUILD
Normal file
|
@ -0,0 +1,64 @@
|
|||
# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
|
||||
# Contributor: Antoine Martin (ayakael) <dev@ayakael.net>
|
||||
pkgname=freescout
|
||||
pkgver=1.8.115
|
||||
pkgrel=0
|
||||
pkgdesc="Free self-hosted help desk & shared mailbox"
|
||||
arch="noarch"
|
||||
url="freescout.net"
|
||||
license="AGPL-3.0"
|
||||
_php=php82
|
||||
_php_mods="-fpm -mbstring -xml -imap -zip -gd -curl -intl -tokenizer -pdo_pgsql -openssl -session -iconv -fileinfo -dom -pcntl"
|
||||
depends="$_php ${_php_mods//-/$_php-} nginx postgresql pwgen"
|
||||
makedepends="composer pcre"
|
||||
install="$pkgname.post-install $pkgname.post-upgrade $pkgname.pre-install"
|
||||
source="
|
||||
$pkgname-$pkgver.tar.gz::https://github.com/freescout-helpdesk/freescout/archive/refs/tags/$pkgver.tar.gz
|
||||
freescout.nginx
|
||||
freescout-manage.sh
|
||||
"
|
||||
pkgusers="freescout"
|
||||
pkggroups="freescout"
|
||||
|
||||
build() {
|
||||
composer install --ignore-platform-reqs
|
||||
}
|
||||
|
||||
package() {
|
||||
local logdir="/var/log/$pkgname"
|
||||
local wwwdir="/usr/share/webapps/$pkgname"
|
||||
local confdir="/etc/$pkgname"
|
||||
|
||||
# Make directories
|
||||
install -dm 755 \
|
||||
"$pkgdir"/$wwwdir \
|
||||
"$pkgdir"/$confdir
|
||||
|
||||
# Copy and ln operations
|
||||
cp $builddir/* -R "$pkgdir"/$wwwdir/.
|
||||
ln -s /etc/freescout/freescout.conf "$pkgdir"/usr/share/webapps/freescout/.env
|
||||
rm -R "$pkgdir"/$wwwdir/storage/logs
|
||||
ln -s "$logdir" "$pkgdir"/$wwwdir/storage/logs
|
||||
ln -s $wwwdir/storage/app/public "$pkgdir"/$wwwdir/public/storage
|
||||
|
||||
# Permission settings
|
||||
chown -R root:www-data "$pkgdir"/"$wwwdir"
|
||||
find "$pkgdir/$wwwdir" -type f -exec chmod 664 {} \;
|
||||
find "$pkgdir/$wwwdir" -type d -exec chmod 775 {} \;
|
||||
|
||||
# config files
|
||||
install -Dm644 "$srcdir"/freescout.nginx \
|
||||
"$pkgdir"/etc/nginx/http.d/freescout.conf
|
||||
install -Dm640 "$builddir"/.env.example \
|
||||
"$pkgdir"/etc/freescout/freescout.conf
|
||||
sed -i 's|APP_KEY.*|APP_KEY=@@SECRET_KEY@@|' "$pkgdir"/etc/freescout/freescout.conf
|
||||
chown root:www-data "$pkgdir"/etc/freescout/freescout.conf
|
||||
|
||||
# Install wrapper script to /usr/bin.
|
||||
install -m755 -D "$srcdir"/freescout-manage.sh "$pkgdir"/usr/bin/freescout-manage
|
||||
}
|
||||
sha512sums="
|
||||
a3b14c0193e2ec4543cca36ed2a39c0e8a7aa77970f7c4d3761ba8ed8939a9684ec54e8a8dbe0264210be9be1ede35e867cb01271699b2b21f840a1b22406d3a freescout-1.8.115.tar.gz
|
||||
e4af6c85dc12f694bef2a02e4664e31ed50b2c109914d7ffad5001c2bbd764ef25b17ecaa59ff55ef41bccf17169bf910d1a08888364bdedd0ecc54d310e661f freescout.nginx
|
||||
7ce9b3ee3a979db44f5e6d7daa69431e04a5281f364ae7be23e5a0a0547f96abc858d2a8010346be2fb99bd2355fb529e7030ed20d54f310249e61ed5db4d0ba freescout-manage.sh
|
||||
"
|
11
user/freescout/freescout-manage.sh
Normal file
11
user/freescout/freescout-manage.sh
Normal file
|
@ -0,0 +1,11 @@
|
|||
#!/bin/sh
|
||||
|
||||
BUNDLE_DIR='/usr/share/webapps/freescout'
|
||||
|
||||
cd $BUNDLE_DIR
|
||||
|
||||
if [ "$(id -un)" != 'freescout' ]; then
|
||||
exec su freescout -c '"$0" "$@"' -- php artisan "$@"
|
||||
else
|
||||
exec php artisan "$@"
|
||||
fi
|
56
user/freescout/freescout.nginx
Normal file
56
user/freescout/freescout.nginx
Normal file
|
@ -0,0 +1,56 @@
|
|||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
|
||||
server_name example.com www.example.com;
|
||||
|
||||
root /usr/share/webapps/freescout/public;
|
||||
|
||||
index index.php index.html index.htm;
|
||||
|
||||
error_log /var/www/html/storage/logs/web-server.log;
|
||||
|
||||
# Max. attachment size.
|
||||
# It must be also set in PHP.ini via "upload_max_filesize" and "post_max_size" directives.
|
||||
client_max_body_size 20M;
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.php?$query_string;
|
||||
}
|
||||
location ~ \.php$ {
|
||||
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
||||
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
|
||||
fastcgi_index index.php;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
include fastcgi_params;
|
||||
}
|
||||
# Uncomment this location if you want to improve attachments downloading speed.
|
||||
# Also make sure to set APP_DOWNLOAD_ATTACHMENTS_VIA=nginx in the .env file.
|
||||
#location ^~ /storage/app/attachment/ {
|
||||
# internal;
|
||||
# alias /var/www/html/storage/app/attachment/;
|
||||
#}
|
||||
location ~* ^/storage/attachment/ {
|
||||
expires 1M;
|
||||
access_log off;
|
||||
try_files $uri $uri/ /index.php?$query_string;
|
||||
}
|
||||
location ~* ^/(?:css|js)/.*\.(?:css|js)$ {
|
||||
expires 2d;
|
||||
access_log off;
|
||||
add_header Cache-Control "public, must-revalidate";
|
||||
}
|
||||
# The list should be in sync with /storage/app/public/uploads/.htaccess and /config/app.php
|
||||
location ~* ^/storage/.*\.((?!(jpg|jpeg|jfif|pjpeg|pjp|apng|bmp|gif|ico|cur|png|tif|tiff|webp|pdf|txt|diff|patch|json|mp3|wav|ogg|wma)).)*$ {
|
||||
add_header Content-disposition "attachment; filename=$2";
|
||||
default_type application/octet-stream;
|
||||
}
|
||||
location ~* ^/(?:css|fonts|img|installer|js|modules|[^\\\]+\..*)$ {
|
||||
expires 1M;
|
||||
access_log off;
|
||||
add_header Cache-Control "public";
|
||||
}
|
||||
location ~ /\. {
|
||||
deny all;
|
||||
}
|
||||
}
|
56
user/freescout/freescout.post-install
Executable file
56
user/freescout/freescout.post-install
Executable file
|
@ -0,0 +1,56 @@
|
|||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
group=www-data
|
||||
config_file='/etc/freescout/freescout.conf'
|
||||
|
||||
if [ $(grep '@@SECRET_KEY@@' "$config_file") ]; then
|
||||
echo "* Generating random secret in $config_file" >&2
|
||||
|
||||
secret_key="$(freescout-manage key:generate --show)"
|
||||
sed -i "s|@@SECRET_KEY@@|$secret_key|" "$config_file"
|
||||
fi
|
||||
|
||||
if [ "${0##*.}" = 'post-upgrade' ]; then
|
||||
cat >&2 <<-EOF
|
||||
*
|
||||
* To finish Freescout upgrade run:
|
||||
*
|
||||
* freescout-manage migrate
|
||||
*
|
||||
* You may need to adjust permissions:
|
||||
* find /usr/share/webapps/freescout -type f -exec chmod 664 {} \;
|
||||
* find /usr/share/webapps/freescout -type d -exec chmod 775 {} \;
|
||||
*
|
||||
EOF
|
||||
else
|
||||
cat >&2 <<-EOF
|
||||
*
|
||||
* 1. Adjust settings in /etc/freescout/freescout.conf
|
||||
*
|
||||
* 2. Make sure cgi.fix_pathinfo=0 is set in /etc/php8x/php.ini is set
|
||||
*
|
||||
* 3. Create database for Freescout:
|
||||
*
|
||||
* psql -c "CREATE ROLE freescout PASSWORD 'top-secret' INHERIT LOGIN;"
|
||||
* psql -c "CREATE DATABASE freescout OWNER freescout ENCODING 'UTF-8';"
|
||||
*
|
||||
* 4. Clear application cache and apply .env file changes:
|
||||
*
|
||||
* freescout-manage freescout:clear-cache
|
||||
*
|
||||
* 5. Create tables:
|
||||
*
|
||||
* freescout-manage migrate
|
||||
*
|
||||
* 6. Create admin user
|
||||
*
|
||||
* freescout-manage freescout:create-user
|
||||
*
|
||||
* You may need to adjust permissions:
|
||||
* find /usr/share/webapps/freescout -type f -exec chmod 664 {} \;
|
||||
* find /usr/share/webapps/freescout -type d -exec chmod 775 {} \;
|
||||
*
|
||||
EOF
|
||||
fi
|
||||
|
1
user/freescout/freescout.post-upgrade
Symbolic link
1
user/freescout/freescout.post-upgrade
Symbolic link
|
@ -0,0 +1 @@
|
|||
freescout.post-install
|
25
user/freescout/freescout.pre-install
Executable file
25
user/freescout/freescout.pre-install
Executable file
|
@ -0,0 +1,25 @@
|
|||
#!/bin/sh
|
||||
|
||||
freescout_dir='/var/lib/freescout'
|
||||
|
||||
if ! getent group freescout 1>/dev/null; then
|
||||
echo '* Creating group freescout' 1>&2
|
||||
|
||||
addgroup -S freescout
|
||||
fi
|
||||
|
||||
if ! id freescout 2>/dev/null 1>&2; then
|
||||
echo '* Creating user freescout' 1>&2
|
||||
|
||||
adduser -DHS -G freescout -h "$freescout_dir" -s /bin/sh \
|
||||
-g "added by apk for freescout" freescout
|
||||
passwd -u freescout 1>/dev/null # unlock
|
||||
fi
|
||||
|
||||
if ! id -Gn freescout | grep -Fq www-data; then
|
||||
echo '* Adding user freescout to group www-data' 1>&2
|
||||
|
||||
addgroup freescout www-data
|
||||
fi
|
||||
|
||||
exit 0
|
Loading…
Reference in a new issue