diff options
author | Fabian Bornschein | 2022-01-27 14:54:16 +0100 |
---|---|---|
committer | Fabian Bornschein | 2022-01-27 14:54:16 +0100 |
commit | 1c57a0251ede0b575a6337af9f738f7101bcdf9a (patch) | |
tree | d817bf5ab8342855f47f5441fe8f36534392cf8d | |
download | aur-1c57a0251ede0b575a6337af9f738f7101bcdf9a.tar.gz |
Never say no twice if you mean it.
-rw-r--r-- | .SRCINFO | 37 | ||||
-rw-r--r-- | PKGBUILD | 123 | ||||
-rw-r--r-- | misskey.install | 56 | ||||
-rw-r--r-- | misskey.service | 44 | ||||
-rw-r--r-- | misskey.sysusers | 1 | ||||
-rw-r--r-- | misskey.tmpfiles | 7 |
6 files changed, 268 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..819bef0d4cbc --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,37 @@ +pkgbase = misskey + pkgdesc = 🌎 An interplanetary microblogging platform 🚀 (Experimental) + pkgver = 12.102.1 + pkgrel = 1 + url = https://github.com/misskey-dev/misskey + install = misskey.install + arch = x86_64 + license = AGPL3 + license = MIT + makedepends = git + makedepends = python + depends = nodejs-lts-gallium + depends = npm + depends = postgresql + depends = redis + depends = yarn + optdepends = elasticsearch: search functionality + optdepends = ffmpeg: something something + optdepends = nginx: reverse-proxy usage + options = !strip + source = git+https://github.com/misskey-dev/misskey.git#commit=97885d3def2ec2daa7e2706971f96052b60fbe79 + source = misskey.install + source = misskey.service + source = misskey.sysusers + source = misskey.tmpfiles + md5sums = SKIP + md5sums = aa0312f32fe331cd7a2e471902dad1f4 + md5sums = 9abc87cea2314b95334d4ad3b309e931 + md5sums = a3fe48c606eabebf818106648c0bf0d9 + md5sums = c6f7dc5885f8db2329b3b1e3c2a67ef5 + sha256sums = SKIP + sha256sums = d860082dbc90b0e7ecadcb1bfeeeb11dae6f24544d4746883e4a2bfafd052284 + sha256sums = 5cd19f1798eb1852c47c7786021adede99d95ab83feb0802e7b1fba50a308517 + sha256sums = a3ff9c1b77920ebbb0df8fb1affe9e8ef54d907bd4d16ed7c6076cbf52726df7 + sha256sums = c368b2ed2efbeca0e488f883defb2ccb7ed4661cc6832d2c396176206a794f34 + +pkgname = misskey diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..3850238501a4 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,123 @@ +# Maintainer: Fabian Bornschein <fabiscafe@mailbox.org> + +pkgname=misskey +pkgver=12.102.1 +pkgrel=1 +pkgdesc="🌎 An interplanetary microblogging platform 🚀 (Experimental)" +url="https://github.com/misskey-dev/misskey" +options=("!strip") +arch=("x86_64") +license=("AGPL3" "MIT") +depends=("nodejs-lts-gallium" "npm" "postgresql" "redis" "yarn") +makedepends=("git" "python") +install="misskey.install" +optdepends=("elasticsearch: search functionality" + "ffmpeg: something something" + "nginx: reverse-proxy usage") +_commit="97885d3def2ec2daa7e2706971f96052b60fbe79" +source=("git+https://github.com/misskey-dev/misskey.git#commit=${_commit}" #tag/12.102.1 + "${pkgname}.install" + "${pkgname}.service" + "${pkgname}.sysusers" + "${pkgname}.tmpfiles") +md5sums=('SKIP' + 'aa0312f32fe331cd7a2e471902dad1f4' + '9abc87cea2314b95334d4ad3b309e931' + 'a3fe48c606eabebf818106648c0bf0d9' + 'c6f7dc5885f8db2329b3b1e3c2a67ef5') +sha256sums=('SKIP' + 'd860082dbc90b0e7ecadcb1bfeeeb11dae6f24544d4746883e4a2bfafd052284' + '5cd19f1798eb1852c47c7786021adede99d95ab83feb0802e7b1fba50a308517' + 'a3ff9c1b77920ebbb0df8fb1affe9e8ef54d907bd4d16ed7c6076cbf52726df7' + 'c368b2ed2efbeca0e488f883defb2ccb7ed4661cc6832d2c396176206a794f34') + +pkgver() { + cd "${pkgname}" + git describe --tags | sed 's/-/+/g' +} + +prepare() { + cd "${pkgname}" + + # Dependency handling + git submodule update --init + HOME="${srcdir}/${pkgname}" yarn install + + # Example configuration + ## Change example configuration to reflect + ## this packages purpose + _example_file="${srcdir}/${pkgname}/.config/example.yml" + + sed -i \ + 's|https://example.tld/|https://wiki.archlinux.org/title/Misskey|; + s|use option 1, uncomment|not use option 1, comment out|; + s|#port: 3000|port: 3000|; + s|example-misskey-user|misskey|; + s| pass: example-misskey-pass|# pass: misskey|; + s|#outgoingAddressFamily: ipv4|outgoingAddressFamily: dual|' \ + ${_example_file} +} + +build() { + cd "${pkgname}" + NODE_ENV=production HOME="${srcdir}/${pkgname}" yarn build + + # Cleanup + find "${srcdir}/${pkgname}" \ + -depth \ + -type d \ + \( -iname '.git' \ + -o -iname '.github' \ + -o -iname '.vscode' \) \ + -execdir rm -rf '{}' \; + find "${srcdir}/${pkgname}" \ + -type f \ + \( -name '.git' \ + -o -name '.gitattributes' \ + -o -name '.gitignore' \ + -o -name '.gitmodules' \ + -o -name '.docker*' \ + -o -iname 'docker*' \ + -o -name '.editor*' \ + -o -name '.vsls.json' \) \ + -not -name 'docker*.js' \ + -delete + rm -r "${srcdir}/${pkgname}/cypress" + rm -r "${srcdir}/${pkgname}/.cache" + rm -r "${srcdir}/${pkgname}/docs" + rm -r "${srcdir}/${pkgname}/misskey-assets" + rm -rf "${srcdir}/${pkgname}/.npm" + rm -r "${srcdir}/${pkgname}/scripts" + rm -r "${srcdir}/${pkgname}/.yarn" +} + +package() { + # systemd files + install -Dm644 ${pkgname}.service -t "${pkgdir}"/usr/lib/systemd/system/ + install -Dm644 ${pkgname}.sysusers "${pkgdir}"/usr/lib/sysusers.d/${pkgname}.conf + install -Dm644 ${pkgname}.tmpfiles "${pkgdir}"/usr/lib/tmpfiles.d/${pkgname}.conf + + install -dm755 "${pkgdir}/usr/share/webapps" + mv "${srcdir}/${pkgname}" "${pkgdir}/usr/share/webapps/" + + # config setup + install -dm755 "${pkgdir}/etc/webapps/${pkgname}" + mv "${pkgdir}/usr/share/webapps/${pkgname}/.config/example.yml" -t \ + "${pkgdir}/etc/webapps/${pkgname}/" + rmdir "${pkgdir}/usr/share/webapps/${pkgname}/.config" + ln -s "/etc/webapps/${pkgname}" "${pkgdir}/usr/share/webapps/${pkgname}/.config" + + # cache setup + ln -s "/var/cache/${pkgname}" "${pkgdir}/usr/share/webapps/${pkgname}/.cache" + + # yarn, npm setup + ln -s "/var/lib/${pkgname}/yarn" "${pkgdir}/usr/share/webapps/${pkgname}/.yarn" + ln -s "/var/lib/${pkgname}/npm" "${pkgdir}/usr/share/webapps/${pkgname}/.npm" + + # files (upload, …) + ln -s "/var/lib/${pkgname}/files" "${pkgdir}/usr/share/webapps/${pkgname}/files" + + # license + install -Dm644 "${pkgdir}/usr/share/webapps/${pkgname}/COPYING" \ + "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" +} diff --git a/misskey.install b/misskey.install new file mode 100644 index 000000000000..d7b7e74bf28c --- /dev/null +++ b/misskey.install @@ -0,0 +1,56 @@ +post_install() { + printf "You've successfully installed misskey!\n" + if ! [ -f "/etc/webapps/misskey/default.yml" ]; then + cp "/etc/webapps/misskey/example.yml" "/etc/webapps/misskey/default.yml" + printf "There is a list of things you need to do now.\n" + printf "1. Edit the default.yml to reflect your systems configuration\n" + printf "2. Setup PostgreSQL\n" + printf "3. Add a PostgreSQL user \"misskey\" and a database for this user also called \"misskey\"\n" + printf "4. Startup redis.service\n" + printf "^^^^^^^^ Only after thats done ^^^^^^^^\n" + printf "5. Run the database initialisation as root user\n" + printf " cd \"/usr/share/webapps/misskey/\"\n" + printf " runuser -u misskey -- env HOME=\"/usr/share/webapps/misskey\" yarn run init\n" + printf "6. Finally start misskey.service\n" + printf "More on the setup: https://misskey-hub.net/en/docs/install/manual.html\n" + printf "#TODO: Yes, this needs to be in the wiki." + fi + printf "You need to configure a reverse-proxy to grand network access localhost:3000\n" +} + +## $1: new package version +## $2: old package version +pre_upgrade() { + ## Ignore reinstallations of the same or older versions + if [ $(vercmp $1 $2) -gt 0 ] ; then + ## Shut down the misskey service before touching it's files + if systemctl is-active misskey.service > /dev/null; then + printf "Shutting down misskey\n" + systemctl stop misskey.service + fi + fi +} + +post_upgrade() { + ## Ignore reinstallations of the same or older versions + if [ $(vercmp $1 $2) -gt 0 ] ; then + ## Dont do anything if there is no default configuration (not setup) + if [ -f "/etc/webapps/misskey/default.yml" ]; then + ## Migration needs PostgreSQL + redis running. Dont migrate if not running + if systemctl is-active postgresql.service > /dev/null \ + && systemctl is-active redis.service > /dev/null; then + printf "Migrate data to new version\n" + cd "/usr/share/webapps/misskey/" + runuser -u misskey -- env HOME=/usr/share/webapps/misskey yarn migrate + printf "Misskey service is *not* started\n" + printf "Thats your job!\n" + else + printf "Misskey migration was not started because PostgreSQL and or redis is inactive." + printf "Please start the services and run\n" + printf " cd /usr/share/webapps/misskey\n" + printf " HOME=/usr/share/webapps/misskey yarn migrate\n" + printf "as misskey user manually\n" + fi + fi + fi +} diff --git a/misskey.service b/misskey.service new file mode 100644 index 000000000000..af53616f8dbc --- /dev/null +++ b/misskey.service @@ -0,0 +1,44 @@ +[Unit] +Description=Misskey Server +Requires=postgresql.service redis.service +After=postgresql.service redis.service + +[Service] +Type=simple +User=misskey +Group=misskey +PermissionsStartOnly=true +WorkingDirectory=/usr/share/webapps/misskey +Environment=NODE_ENV=production +Environment=HOME=/usr/share/webapps/misskey +ExecStart=npm start +Restart=on-failure +ReadWritePaths=/etc/webapps/misskey/default.yml +ReadWritePaths=/var/cache/misskey +ReadWritePaths=/var/lib/misskey +LockPersonality=true +NoNewPrivileges=true +PrivateDevices=true +PrivateTmp=true +PrivateUsers=true +ProtectClock=true +ProtectControlGroups=true +ProtectHome=true +ProtectHostname=true +ProtectKernelLogs=true +ProtectKernelModules=true +ProtectKernelTunables=true +ProtectProc=invisible +ProtectSystem=strict +SocketBindAllow=3000 +SocketBindAllow=443 # used to show previews and other things +SocketBindDeny=any +RestrictNamespaces=true +RestrictRealtime=true +RestrictSUIDSGID=true +SystemCallArchitectures=native +SystemCallFilter=@system-service +SystemCallErrorNumber=EPERM + +[Install] +WantedBy=multi-user.target diff --git a/misskey.sysusers b/misskey.sysusers new file mode 100644 index 000000000000..dcdd01351d4c --- /dev/null +++ b/misskey.sysusers @@ -0,0 +1 @@ +u misskey - "misskey user" diff --git a/misskey.tmpfiles b/misskey.tmpfiles new file mode 100644 index 000000000000..f755a6489820 --- /dev/null +++ b/misskey.tmpfiles @@ -0,0 +1,7 @@ +#Type Path Mode User Group Age Argument +d /var/lib/misskey 0770 misskey misskey - - +d /var/lib/misskey/npm 0770 misskey misskey - - +d /var/lib/misskey/yarn 0770 misskey misskey - - +d /var/lib/misskey/files 0770 misskey misskey - - +z /etc/webapps/misskey/config.json 0660 misskey misskey - - +d /var/cache/misskey 0755 misskey misskey - - |