summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorFabian Bornschein2022-01-27 14:54:16 +0100
committerFabian Bornschein2022-01-27 14:54:16 +0100
commit1c57a0251ede0b575a6337af9f738f7101bcdf9a (patch)
treed817bf5ab8342855f47f5441fe8f36534392cf8d
downloadaur-1c57a0251ede0b575a6337af9f738f7101bcdf9a.tar.gz
Never say no twice if you mean it.
-rw-r--r--.SRCINFO37
-rw-r--r--PKGBUILD123
-rw-r--r--misskey.install56
-rw-r--r--misskey.service44
-rw-r--r--misskey.sysusers1
-rw-r--r--misskey.tmpfiles7
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 - -