<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.alpinelinux.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jahway603</id>
	<title>Alpine Linux - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.alpinelinux.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jahway603"/>
	<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/wiki/Special:Contributions/Jahway603"/>
	<updated>2026-04-30T10:13:35Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Configure_a_Wireguard_interface_(wg)&amp;diff=32069</id>
		<title>Configure a Wireguard interface (wg)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Configure_a_Wireguard_interface_(wg)&amp;diff=32069"/>
		<updated>2026-02-18T20:30:27Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: Added chmod go= for private key&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
[https://en.wikipedia.org/wiki/WireGuard WireGuard] multiple platform vpn solution. WireGuard itself is now integrated into the linux kernel since v5.6. Only the userland configuration tools are required.&lt;br /&gt;
&lt;br /&gt;
== Installation  ==&lt;br /&gt;
&lt;br /&gt;
The most straightforward method to configure WireGuard is to use the tool &amp;lt;code&amp;gt;wg-quick&amp;lt;/code&amp;gt; available in the package {{pkg|wireguard-tools-wg-quick}}. &lt;br /&gt;
&lt;br /&gt;
Install the meta package {{pkg|wireguard-tools}} to install the necessary WireGuard packages  and {{pkg|iptables}} as follows: {{Cmd|# apk add wireguard-tools iptables}}&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
=== Create Server Keys and Interface Config ===&lt;br /&gt;
&lt;br /&gt;
Create a server private and public key: {{Cmd|&amp;lt;nowiki&amp;gt;# wg genkey | tee server.privatekey | wg pubkey &amp;gt; server.publickey&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Remove any permissions on the file for users and groups other than the root user to ensure that only it can access the private key: {{Cmd|&amp;lt;nowiki&amp;gt;# chmod go= server.privatekey&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Then, we create a new config file {{Path|/etc/wireguard/wg0.conf}} using these new keys as follows:{{Cat|/etc/wireguard/wg0.conf|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Interface]&lt;br /&gt;
Address = 192.168.2.1/24, fddd::ffff/64&lt;br /&gt;
ListenPort = 45340&lt;br /&gt;
PrivateKey = &amp;lt;server private key value&amp;gt; # the key from the previously generated privatekey file&lt;br /&gt;
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;iptables -A FORWARD -o %i -j ACCEPT; ip6tables -A FORWARD -i %i -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;ip6tables -A FORWARD -o %i -j ACCEPT&lt;br /&gt;
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE;iptables -D FORWARD -o %i -j ACCEPT; ip6tables -D FORWARD -i %i -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE;ip6tables -D FORWARD -o %i -j ACCEPT&lt;br /&gt;
 &lt;br /&gt;
[Peer]&lt;br /&gt;
PublicKey = &amp;lt;client public key value&amp;gt; # obtained from client device via wireguard connection setup process&lt;br /&gt;
AllowedIPs = 192.168.2.2/32, fddd::1/128&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The PostUp and PostDown iptable rules forward traffic from the wg0 subnet (192.168.2.1/24) to the lan subnet on interface eth0. Refer to [https://github.com/pirate/wireguard-docs#user-content-config-reference this WireGuard documentation] for information on adding peers to the config file.&lt;br /&gt;
&lt;br /&gt;
Bring up the new {{ic|wg0}} interface:{{Cmd|# wg-quick up wg0}}&lt;br /&gt;
&lt;br /&gt;
To take it down, we can use &amp;lt;code&amp;gt;wg-quick down wg0&amp;lt;/code&amp;gt; which will clean up the interface and remove the iptables rules.&lt;br /&gt;
&lt;br /&gt;
{{Note|If running in a Docker container, you will need to run with &amp;lt;code&amp;gt;--cap-add{{=}}NET_ADMIN&amp;lt;/code&amp;gt; to modify your interfaces.}}&lt;br /&gt;
&lt;br /&gt;
=== Use with network interfaces ===&lt;br /&gt;
&lt;br /&gt;
To enable connecting with Wireguard on boot, open your {{Path|/etc/network/interfaces}} and add this information after your auto other network interfaces as follows:{{Cat|/etc/network/interfaces|&amp;lt;nowiki&amp;gt;...&lt;br /&gt;
auto wg0&lt;br /&gt;
iface wg0 inet static&lt;br /&gt;
pre-up wg-quick up /etc/wireguard/wg0.conf&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== Service configuration ===&lt;br /&gt;
&lt;br /&gt;
Since Alpine 3.20, {{pkg|wireguard-tools-openrc}} package provides an OpenRC initd service file. &lt;br /&gt;
&lt;br /&gt;
To use this, install the package:{{Cmd|# apk add wireguard-tools-openrc }}&lt;br /&gt;
&lt;br /&gt;
To use the WireGuard OpenRC script with {{ic|wg-quick.wg0}}, create a symbolic link to it with the configuration name as follows:{{Cmd|# ln -s /etc/init.d/wg-quick /etc/init.d/wg-quick.wg0}}&lt;br /&gt;
&lt;br /&gt;
Add the {{ic|wg-quick.wg0}} service to the default runlevel:{{Cmd|# rc-update add wg-quick.wg0}}&lt;br /&gt;
To start|stop|restart the [[OpenRC]] service:{{Cmd|# rc-service wg-quick.wg0 start}}&lt;br /&gt;
&lt;br /&gt;
=== Enable IP Forwarding ===&lt;br /&gt;
&lt;br /&gt;
With a NAT destination rule in place on your router, you should be able connect to the wireguard instance and access the host. However, if you intend for peers to be able to access external resources (including the internet), you will need to enable ip forwarding.&lt;br /&gt;
&lt;br /&gt;
Edit the file {{Path|/etc/sysctl.conf}} or a &amp;lt;code&amp;gt;.conf&amp;lt;/code&amp;gt; file under {{Path|/etc/sysctl.d/}} folder add the following line as follows:{{Cat|/etc/sysctl.conf|&lt;br /&gt;
net.ipv4.ip_forward {{=}} 1&lt;br /&gt;
net.ipv6.conf.all.forwarding {{=}} 1&lt;br /&gt;
net.ipv6.conf.default.forwarding {{=}} 1}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add the sysctl service to run at boot:{{Cmd|# rc-update add sysctl}}&lt;br /&gt;
&lt;br /&gt;
Then either reboot or run {{ic|# sysctl -p /etc/sysctl.conf}} to reload the settings. To ensure forwarding is turned on, run {{ic|# sysctl -a | grep ip_forward}} and ensure &amp;lt;Code&amp;gt;net.ipv4.ip_forward&amp;lt;/code&amp;gt; is set to &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In the file {{Path|/etc/conf.d/iptables}}, Change the setting as follows:{{Cat|/etc/conf.d/iptables|...&lt;br /&gt;
IPFORWARD{{=}}&amp;quot;yes&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
== Running with modloop ==&lt;br /&gt;
&lt;br /&gt;
If you are running [[Diskless Mode]] i.e from a RAM disk, you can&#039;t modify the modloop. &lt;br /&gt;
&lt;br /&gt;
You can get around it by unpacking the modloop, mounting the unpacked modules folder, then installing WireGuard. &lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 apk add squashfs-tools # install squashfs tools to unpack modloop&lt;br /&gt;
 unsquashfs -d /root/squash /lib/modloop-lts # unpack modloop to root dir&lt;br /&gt;
 umount /.modloop # unmount existing modloop&lt;br /&gt;
 mount /root/squash/ /.modloop/ # mount unpacked modloop&lt;br /&gt;
 apk del wireguard-lts # uninstall previous WireGuard install&lt;br /&gt;
 apk add wireguard-lts&lt;br /&gt;
 apk add wireguard-tools&lt;br /&gt;
&lt;br /&gt;
You can repack the squash filesystem or put this script in the /etc/local.d/ path so it runs at boot-up.&lt;br /&gt;
&lt;br /&gt;
== Preventing leaks ==&lt;br /&gt;
&lt;br /&gt;
When using a private network over Wireguard, it may be desirable to prevent traffic from leaking onto other networks with the same range (e.g.: a Wi-Fi network using the same range).&lt;br /&gt;
&lt;br /&gt;
Suppose we are using the network &amp;lt;code&amp;gt;fd00:feed:c0de::&amp;lt;/code&amp;gt; over Wireguard. To prevent leaks using [[nftables]], use the following &amp;lt;code&amp;gt;/etc/nftables.d/private-network.nft&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 #!/usr/sbin/nft -f&lt;br /&gt;
 &lt;br /&gt;
 table inet filter {&lt;br /&gt;
   chain output {&lt;br /&gt;
     type filter hook output priority 0;&lt;br /&gt;
 &lt;br /&gt;
     # Allow traffic to fd00:feed:c0de::1 only via wg0.&lt;br /&gt;
     ip6 daddr fd00:feed:c0de::1 oifname &amp;quot;wg0&amp;quot; accept&lt;br /&gt;
 &lt;br /&gt;
     # Drop all other attempts to reach fd00:feed:c0de::1.&lt;br /&gt;
     ip6 daddr fd00:feed:c0de::1 drop&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/pirate/wireguard-docs WireGuard documentation]&lt;br /&gt;
&lt;br /&gt;
[[Category:Networking]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Postgresql&amp;diff=31382</id>
		<title>Postgresql</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Postgresql&amp;diff=31382"/>
		<updated>2025-11-03T16:00:29Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: /* Installation */ removed postgresql 14, as not available in v3.22&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;PostgreSQL is a well known opensource database that scales well and is easy to use.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
PostgreSQL 17 is the latest version since [[Release_Notes_for_Alpine_3.21.0#PostgreSQL_17|v3.21]].&lt;br /&gt;
&lt;br /&gt;
To install PostgreSQL 17,&lt;br /&gt;
{{Cmd|# apk add postgresql17 postgresql17-contrib postgresql17-openrc}}&lt;br /&gt;
{{Cmd|# rc-update add postgresql}}&lt;br /&gt;
{{Cmd|# rc-service postgresql start}}&lt;br /&gt;
&lt;br /&gt;
This will start the postgresql server and perform some initial configuration. It will also create a system user called &#039;&#039;&#039;postgres&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Older versions of PostgreSQL 16 and PostgreSQL 15 are still available as of [[Release Notes for Alpine 3.22.0|v3.22]] and can be installed using the same commands as above except for replacing the version number in the appropriate package names. For example, {{pkg|postgresql17}} is to be replaced by {{pkg|postgresql16}} and {{pkg|postgresql15}} for PostgreSQL 16 and PostgreSQL 15 14 respectively.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
Login as the postgres user and start psql to create a new user and database:&lt;br /&gt;
{{Cmd|su postgres}}&lt;br /&gt;
{{Cmd|psql}}&lt;br /&gt;
{{Cmd|create user user with encrypted password &#039;password&#039;;}}&lt;br /&gt;
{{Cmd|create database database;}}&lt;br /&gt;
{{Cmd|grant all privileges on database database to user;}}&lt;br /&gt;
&lt;br /&gt;
=== Network access ===&lt;br /&gt;
&lt;br /&gt;
By default only local access is allowed to PostgreSQL. To allow other networked services to access the database we need to configure PostgreSQL to allow external connections.&lt;br /&gt;
&lt;br /&gt;
In this example, we are using PostgreSQL v16, so substitute below for your specific version.&lt;br /&gt;
Edit the {{Path|/etc/postgresql16/postgresql.conf}} file using &amp;lt;code&amp;gt;nano&amp;lt;/code&amp;gt; or any other {{ic|&amp;lt;editor&amp;gt; /etc/postgresql16/postgresql.conf}}&lt;br /&gt;
Find the line that starts with &amp;lt;pre&amp;gt;#listen_addresses = &#039;localhost&#039;&amp;lt;/pre&amp;gt; &lt;br /&gt;
Uncomment it and change it to the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;listen_addresses = &#039;*&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you want it to listen on a specific ip you can change * to 192.168.1.2/24.&lt;br /&gt;
Save the file and change the next config file.&lt;br /&gt;
&lt;br /&gt;
Modify the {{Path|/etc/postgresql16/pg_hba.conf}} file using &amp;lt;code&amp;gt;nano&amp;lt;/code&amp;gt; or any other {{ic|&amp;lt;editor&amp;gt; /etc/postgresql16/pg_hba.conf}}&lt;br /&gt;
Look for the line: &amp;lt;pre&amp;gt;host    all             all             127.0.0.1/32            md5&amp;lt;/pre&amp;gt;&lt;br /&gt;
And change it to: &amp;lt;pre&amp;gt;host all all 0.0.0.0/0 md5&amp;lt;/pre&amp;gt;&lt;br /&gt;
This line allows connections from any IP address and requires a password for authentication (md5).&lt;br /&gt;
Restart the server to allow incoming connections from other hosts. {{Cmd|rc-service postgresql restart}}&lt;br /&gt;
&lt;br /&gt;
Allow the port through the firewall. For [[UFW]] firewall type: {{Cmd|ufw allow 5432}}&lt;br /&gt;
&lt;br /&gt;
This is a basic configuration. You can configure the PostgreSQL server to only allow certain networks or IP&#039;s to connect, but that&#039;s beyond the scope of this documentation.&lt;br /&gt;
&lt;br /&gt;
== Switching between PostgreSQL versions ==&lt;br /&gt;
&lt;br /&gt;
On Alpine Linux, you can use the command `pg_versions` to switch between PostgreSQL versions. This is very helpful when upgrading the version you are using.&lt;br /&gt;
&lt;br /&gt;
== Upgrading PostgreSQL ==&lt;br /&gt;
&lt;br /&gt;
Please follow along with [https://perrotta.dev/2025/05/postgresql-major-version-upgrade-on-alpine-linux/ this guide] and adjust the version you are moving from and the version you are upgrading to.&lt;br /&gt;
&lt;br /&gt;
There&#039;s also [https://beune.dev/posts/upgrade-alpine-postgresql/ this].&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://blog.devart.com/configure-postgresql-to-allow-remote-connection.html Guide for Upgrading PostgreSQL]&lt;br /&gt;
* [https://beune.dev/posts/upgrade-alpine-postgresql/  older postgresql upgrade guide]&lt;br /&gt;
&lt;br /&gt;
[[Category:Database]] &lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Postgresql&amp;diff=31314</id>
		<title>Postgresql</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Postgresql&amp;diff=31314"/>
		<updated>2025-10-31T13:20:08Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: Added Configuration section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;PostgreSQL is a well known opensource database that scales well and is easy to use.&lt;br /&gt;
&lt;br /&gt;
== PostgreSQL 17 Installation ==&lt;br /&gt;
&lt;br /&gt;
To install PostgreSQL 17,&lt;br /&gt;
{{Cmd|apk add postgresql17 postgresql17-contrib postgresql17-openrc}}&lt;br /&gt;
{{Cmd|rc-update add postgresql}}&lt;br /&gt;
{{Cmd|rc-service postgresql start}}&lt;br /&gt;
&lt;br /&gt;
This will start the postgresql server and perform some initial configuration. It will also create a system user called postgres.&lt;br /&gt;
&lt;br /&gt;
== PostgreSQL 16 Installation ==&lt;br /&gt;
&lt;br /&gt;
To install PostgreSQL 16,&lt;br /&gt;
{{Cmd|apk add postgresql16 postgresql16-contrib postgresql16-openrc}}&lt;br /&gt;
{{Cmd|rc-update add postgresql}}&lt;br /&gt;
{{Cmd|rc-service postgresql start}}&lt;br /&gt;
&lt;br /&gt;
This will start the postgresql server and perform some initial configuration. It will also create a system user called postgres.&lt;br /&gt;
&lt;br /&gt;
== PostgreSQL 15 Installation ==&lt;br /&gt;
&lt;br /&gt;
To install PostgreSQL 15,&lt;br /&gt;
{{Cmd|apk add postgresql15 postgresql15-contrib postgresql15-openrc}}&lt;br /&gt;
{{Cmd|rc-update add postgresql}}&lt;br /&gt;
{{Cmd|rc-service postgresql start}}&lt;br /&gt;
&lt;br /&gt;
This will start the postgresql server and perform some initial configuration. It will also create a system user called postgres.&lt;br /&gt;
&lt;br /&gt;
== PostgreSQL 14 Installation ==&lt;br /&gt;
&lt;br /&gt;
To install PostgreSQL 14,&lt;br /&gt;
{{Cmd|apk add postgresql14 postgresql14-contrib postgresql14-openrc}}&lt;br /&gt;
{{Cmd|rc-update add postgresql}}&lt;br /&gt;
{{Cmd|rc-service postgresql start}}&lt;br /&gt;
&lt;br /&gt;
This will start the postgresql server and perform some initial configuration. It will also create a system user called postgres.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
Login as the postgres user and start psql to create a new user and database:&lt;br /&gt;
{{Cmd|su postgres}}&lt;br /&gt;
{{Cmd|psql}}&lt;br /&gt;
{{Cmd|create user user with encrypted password &#039;password&#039;;}}&lt;br /&gt;
{{Cmd|create database database;}}&lt;br /&gt;
{{Cmd|grant all privileges on database database to user;}}&lt;br /&gt;
&lt;br /&gt;
=== Network access ===&lt;br /&gt;
&lt;br /&gt;
By default only local access is allowed to PostgreSQL. To allow other networked services to access the database we need to configure PostgreSQL to allow external connections.&lt;br /&gt;
&lt;br /&gt;
In this example, we are using PostgreSQL v16, so substitute below for your specific version.&lt;br /&gt;
Edit the {{Path|/etc/postgresql16/postgresql.conf}} file using &amp;lt;code&amp;gt;nano&amp;lt;/code&amp;gt; or any other {{ic|&amp;lt;editor&amp;gt; /etc/postgresql16/postgresql.conf}}&lt;br /&gt;
Find the line that starts with &amp;lt;pre&amp;gt;#listen_addresses = &#039;localhost&#039;&amp;lt;/pre&amp;gt; &lt;br /&gt;
Uncomment it and change it to the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;listen_addresses = &#039;*&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you want it to listen on a specific ip you can change * to 192.168.1.2/24.&lt;br /&gt;
Save the file and change the next config file.&lt;br /&gt;
&lt;br /&gt;
Modify the {{Path|/etc/postgresql16/pg_hba.conf}} file using &amp;lt;code&amp;gt;nano&amp;lt;/code&amp;gt; or any other {{ic|&amp;lt;editor&amp;gt; /etc/postgresql16/pg_hba.conf}}&lt;br /&gt;
Look for the line: &amp;lt;pre&amp;gt;host    all             all             127.0.0.1/32            md5&amp;lt;/pre&amp;gt;&lt;br /&gt;
And change it to: &amp;lt;pre&amp;gt;host all all 0.0.0.0/0 md5&amp;lt;/pre&amp;gt;&lt;br /&gt;
This line allows connections from any IP address and requires a password for authentication (md5).&lt;br /&gt;
Restart the server to allow incoming connections from other hosts. {{Cmd|rc-service postgresql restart}}&lt;br /&gt;
&lt;br /&gt;
Allow the port through the firewall. For [[UFW]] firewall type: {{Cmd|ufw allow 5432}}&lt;br /&gt;
&lt;br /&gt;
This is a basic configuration. You can configure the PostgreSQL server to only allow certain networks or IP&#039;s to connect, but that&#039;s beyond the scope of this documentation.&lt;br /&gt;
&lt;br /&gt;
== Switching between PostgreSQL versions ==&lt;br /&gt;
&lt;br /&gt;
On Alpine Linux, you can use the command `pg_versions` to switch between PostgreSQL versions. This is very helpful when upgrading the version you are using.&lt;br /&gt;
&lt;br /&gt;
== Upgrading PostgreSQL ==&lt;br /&gt;
&lt;br /&gt;
Please follow along with [https://perrotta.dev/2025/05/postgresql-major-version-upgrade-on-alpine-linux/ this guide] and adjust the version you are moving from and the version you are upgrading to.&lt;br /&gt;
&lt;br /&gt;
There&#039;s also [https://beune.dev/posts/upgrade-alpine-postgresql/ this older guide].&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* https://blog.devart.com/configure-postgresql-to-allow-remote-connection.html&lt;br /&gt;
&lt;br /&gt;
[[Category:Database]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Postgresql&amp;diff=31313</id>
		<title>Postgresql</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Postgresql&amp;diff=31313"/>
		<updated>2025-10-31T13:03:08Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: More generalization&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;PostgreSQL is a well known opensource database that scales well and is easy to use.&lt;br /&gt;
&lt;br /&gt;
== PostgreSQL 17 ==&lt;br /&gt;
&lt;br /&gt;
To install PostgreSQL 17,&lt;br /&gt;
{{Cmd|apk add postgresql17 postgresql17-contrib postgresql17-openrc}}&lt;br /&gt;
{{Cmd|rc-update add postgresql}}&lt;br /&gt;
{{Cmd|rc-service postgresql start}}&lt;br /&gt;
&lt;br /&gt;
This will start the postgresql server and perform some initial configuration. It will also create a system user called postgres.&lt;br /&gt;
&lt;br /&gt;
To configure and use PostgreSQL, please refer to the [https://wiki.alpinelinux.org/wiki/Postgresql_16 PostgreSQL 16 Alpine Wiki page] as the usage is the same.&lt;br /&gt;
&lt;br /&gt;
== PostgreSQL 16 ==&lt;br /&gt;
&lt;br /&gt;
To install PostgreSQL 16,&lt;br /&gt;
{{Cmd|apk add postgresql16 postgresql16-contrib postgresql16-openrc}}&lt;br /&gt;
{{Cmd|rc-update add postgresql}}&lt;br /&gt;
{{Cmd|rc-service postgresql start}}&lt;br /&gt;
&lt;br /&gt;
This will start the postgresql server and perform some initial configuration. It will also create a system user called postgres.&lt;br /&gt;
&lt;br /&gt;
To configure and use PostgreSQL 16, please refer to the [https://wiki.alpinelinux.org/wiki/Postgresql_16 PostgreSQL 16 Alpine Wiki page].&lt;br /&gt;
&lt;br /&gt;
== PostgreSQL 15 ==&lt;br /&gt;
&lt;br /&gt;
To install PostgreSQL 15,&lt;br /&gt;
{{Cmd|apk add postgresql15 postgresql15-contrib postgresql15-openrc}}&lt;br /&gt;
{{Cmd|rc-update add postgresql}}&lt;br /&gt;
{{Cmd|rc-service postgresql start}}&lt;br /&gt;
&lt;br /&gt;
This will start the postgresql server and perform some initial configuration. It will also create a system user called postgres.&lt;br /&gt;
&lt;br /&gt;
To configure and use PostgreSQL, please refer to the [https://wiki.alpinelinux.org/wiki/Postgresql_16 PostgreSQL 16 Alpine Wiki page] as the usage is the same.&lt;br /&gt;
&lt;br /&gt;
== PostgreSQL 14 ==&lt;br /&gt;
&lt;br /&gt;
To install PostgreSQL 14,&lt;br /&gt;
{{Cmd|apk add postgresql14 postgresql14-contrib postgresql14-openrc}}&lt;br /&gt;
{{Cmd|rc-update add postgresql}}&lt;br /&gt;
{{Cmd|rc-service postgresql start}}&lt;br /&gt;
&lt;br /&gt;
This will start the postgresql server and perform some initial configuration. It will also create a system user called postgres.&lt;br /&gt;
&lt;br /&gt;
To configure and use PostgreSQL, please refer to the [https://wiki.alpinelinux.org/wiki/Postgresql_16 PostgreSQL 16 Alpine Wiki page] as the usage is the same.&lt;br /&gt;
&lt;br /&gt;
== Switching between PostgreSQL versions ==&lt;br /&gt;
&lt;br /&gt;
On Alpine Linux, you can use the command `pg_versions` to switch between PostgreSQL versions. This is very helpful when upgrading the version you are using.&lt;br /&gt;
&lt;br /&gt;
== Upgrading PostgreSQL ==&lt;br /&gt;
&lt;br /&gt;
Please follow along with [https://perrotta.dev/2025/05/postgresql-major-version-upgrade-on-alpine-linux/ this guide] and adjust the version you are moving from and the version you are upgrading to.&lt;br /&gt;
&lt;br /&gt;
There&#039;s also [https://beune.dev/posts/upgrade-alpine-postgresql/ this older guide].&lt;br /&gt;
&lt;br /&gt;
[[Category:Database]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Postgresql&amp;diff=31312</id>
		<title>Postgresql</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Postgresql&amp;diff=31312"/>
		<updated>2025-10-31T13:00:39Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: Better generalize certain sections&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;PostgreSQL is a well known opensource database that scales well and is easy to use.&lt;br /&gt;
&lt;br /&gt;
== PostgreSQL 17 ==&lt;br /&gt;
&lt;br /&gt;
To install PostgreSQL 17,&lt;br /&gt;
{{Cmd|apk add postgresql17 postgresql17-contrib postgresql17-openrc}}&lt;br /&gt;
{{Cmd|rc-update add postgresql}}&lt;br /&gt;
{{Cmd|rc-service postgresql start}}&lt;br /&gt;
&lt;br /&gt;
This will start the postgresql server and perform some initial configuration. It will also create a system user called postgres.&lt;br /&gt;
&lt;br /&gt;
To install, configure, and use PostgreSQL 17, which is the latest release as of Alpine v3.21, please refer to the [https://wiki.alpinelinux.org/wiki/Postgresql_16 PostgreSQL 16 Alpine Wiki page]. It will also create a system user called postgres.&lt;br /&gt;
&lt;br /&gt;
== PostgreSQL 16 ==&lt;br /&gt;
&lt;br /&gt;
To install PostgreSQL 16,&lt;br /&gt;
{{Cmd|apk add postgresql16 postgresql16-contrib postgresql16-openrc}}&lt;br /&gt;
{{Cmd|rc-update add postgresql}}&lt;br /&gt;
{{Cmd|rc-service postgresql start}}&lt;br /&gt;
&lt;br /&gt;
This will start the postgresql server and perform some initial configuration. It will also create a system user called postgres.&lt;br /&gt;
&lt;br /&gt;
To install, configure, and use PostgreSQL 16, please refer to the [https://wiki.alpinelinux.org/wiki/Postgresql_16 PostgreSQL 16 Alpine Wiki page]. It will also create a system user called postgres.&lt;br /&gt;
&lt;br /&gt;
== PostgreSQL 15 ==&lt;br /&gt;
&lt;br /&gt;
To install PostgreSQL 15,&lt;br /&gt;
{{Cmd|apk add postgresql15 postgresql15-contrib postgresql15-openrc}}&lt;br /&gt;
{{Cmd|rc-update add postgresql}}&lt;br /&gt;
{{Cmd|rc-service postgresql start}}&lt;br /&gt;
&lt;br /&gt;
This will start the postgresql server and perform some initial configuration. It will also create a system user called postgres.&lt;br /&gt;
&lt;br /&gt;
To configure and use PostgreSQL, please refer to the [https://wiki.alpinelinux.org/wiki/Postgresql_16 PostgreSQL 16 Alpine Wiki page] as the usage is the same.&lt;br /&gt;
&lt;br /&gt;
== PostgreSQL 14 ==&lt;br /&gt;
&lt;br /&gt;
To install PostgreSQL 14,&lt;br /&gt;
{{Cmd|apk add postgresql14 postgresql14-contrib postgresql14-openrc}}&lt;br /&gt;
{{Cmd|rc-update add postgresql}}&lt;br /&gt;
{{Cmd|rc-service postgresql start}}&lt;br /&gt;
&lt;br /&gt;
This will start the postgresql server and perform some initial configuration. It will also create a system user called postgres.&lt;br /&gt;
&lt;br /&gt;
To configure and use PostgreSQL, please refer to the [https://wiki.alpinelinux.org/wiki/Postgresql_16 PostgreSQL 16 Alpine Wiki page] as the usage is the same.&lt;br /&gt;
&lt;br /&gt;
== Switching between PostgreSQL versions ==&lt;br /&gt;
&lt;br /&gt;
On Alpine Linux, you can use the command `pg_versions` to switch between PostgreSQL versions. This is very helpful when upgrading the version you are using.&lt;br /&gt;
&lt;br /&gt;
== Upgrading PostgreSQL ==&lt;br /&gt;
&lt;br /&gt;
Please follow along with [https://perrotta.dev/2025/05/postgresql-major-version-upgrade-on-alpine-linux/ this guide] and adjust the version you are moving from and the version you are upgrading to.&lt;br /&gt;
&lt;br /&gt;
There&#039;s also [https://beune.dev/posts/upgrade-alpine-postgresql/ this older guide].&lt;br /&gt;
&lt;br /&gt;
[[Category:Database]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Postgresql&amp;diff=31311</id>
		<title>Postgresql</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Postgresql&amp;diff=31311"/>
		<updated>2025-10-31T12:59:35Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: Added PostgreSQL 17 section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;PostgreSQL is a well known opensource database that scales well and is easy to use.&lt;br /&gt;
&lt;br /&gt;
== PostgreSQL 17 ==&lt;br /&gt;
&lt;br /&gt;
To install PostgreSQL 17,&lt;br /&gt;
{{Cmd|apk add postgresql17 postgresql17-contrib postgresql17-openrc}}&lt;br /&gt;
{{Cmd|rc-update add postgresql}}&lt;br /&gt;
{{Cmd|rc-service postgresql start}}&lt;br /&gt;
&lt;br /&gt;
This will start the postgresql 15 server and perform some initial configuration. It will also create a system user called postgres.&lt;br /&gt;
&lt;br /&gt;
To install, configure, and use PostgreSQL 17, which is the latest release as of Alpine v3.21, please refer to the [https://wiki.alpinelinux.org/wiki/Postgresql_16 PostgreSQL 16 Alpine Wiki page]. It will also create a system user called postgres.&lt;br /&gt;
&lt;br /&gt;
== PostgreSQL 16 ==&lt;br /&gt;
&lt;br /&gt;
To install PostgreSQL 16,&lt;br /&gt;
{{Cmd|apk add postgresql16 postgresql16-contrib postgresql16-openrc}}&lt;br /&gt;
{{Cmd|rc-update add postgresql}}&lt;br /&gt;
{{Cmd|rc-service postgresql start}}&lt;br /&gt;
&lt;br /&gt;
To install, configure, and use PostgreSQL 16, please refer to the [https://wiki.alpinelinux.org/wiki/Postgresql_16 PostgreSQL 16 Alpine Wiki page]. It will also create a system user called postgres.&lt;br /&gt;
&lt;br /&gt;
== PostgreSQL 15 ==&lt;br /&gt;
&lt;br /&gt;
To install PostgreSQL 15,&lt;br /&gt;
{{Cmd|apk add postgresql15 postgresql15-contrib postgresql15-openrc}}&lt;br /&gt;
{{Cmd|rc-update add postgresql}}&lt;br /&gt;
{{Cmd|rc-service postgresql start}}&lt;br /&gt;
&lt;br /&gt;
This will start the postgresql 15 server and perform some initial configuration. It will also create a system user called postgres.&lt;br /&gt;
&lt;br /&gt;
To configure and use PostgreSQL, please refer to the [https://wiki.alpinelinux.org/wiki/Postgresql_16 PostgreSQL 16 Alpine Wiki page] as the usage is the same.&lt;br /&gt;
&lt;br /&gt;
== PostgreSQL 14 ==&lt;br /&gt;
&lt;br /&gt;
To install PostgreSQL 14,&lt;br /&gt;
{{Cmd|apk add postgresql14 postgresql14-contrib postgresql14-openrc}}&lt;br /&gt;
{{Cmd|rc-update add postgresql}}&lt;br /&gt;
{{Cmd|rc-service postgresql start}}&lt;br /&gt;
&lt;br /&gt;
This will start the postgresql 14 server and perform some initial configuration. It will also create a system user called postgres.&lt;br /&gt;
&lt;br /&gt;
To configure and use PostgreSQL, please refer to the [https://wiki.alpinelinux.org/wiki/Postgresql_16 PostgreSQL 16 Alpine Wiki page] as the usage is the same.&lt;br /&gt;
&lt;br /&gt;
== Switching between PostgreSQL versions ==&lt;br /&gt;
&lt;br /&gt;
On Alpine Linux, you can use the command `pg_versions` to switch between PostgreSQL versions. This is very helpful when upgrading the version you are using.&lt;br /&gt;
&lt;br /&gt;
== Upgrading PostgreSQL ==&lt;br /&gt;
&lt;br /&gt;
Please follow along with [https://perrotta.dev/2025/05/postgresql-major-version-upgrade-on-alpine-linux/ this guide] and adjust the version you are moving from and the version you are upgrading to.&lt;br /&gt;
&lt;br /&gt;
There&#039;s also [https://beune.dev/posts/upgrade-alpine-postgresql/ this older guide].&lt;br /&gt;
&lt;br /&gt;
[[Category:Database]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Nextcloud&amp;diff=29877</id>
		<title>Nextcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Nextcloud&amp;diff=29877"/>
		<updated>2025-05-20T15:11:17Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: /* Nextcloud CLI occ */ added recent nextcloud-occ package install info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://nextcloud.com/ Nextcloud] is WedDAV-based solution for storing and sharing on-line your data, files, images, video, music, calendars and contacts. [https://karlitschek.de/2016/06/nextcloud/ Nextcloud is a fork of ownCloud with enterprise features included].&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
{{pkg|nextcloud}} is available in Alpine 3.5 and greater.&lt;br /&gt;
&lt;br /&gt;
Before you start installing anything, make sure you have the latest packages available. Make sure you are using an &#039;http&#039; repository in your {{path|/etc/apk/repositories}} file, then:&lt;br /&gt;
{{cmd|apk update}}&lt;br /&gt;
{{tip|Detailed information is found in [[Include:Upgrading_to_latest_release|this]] doc.}}&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
First you have to decide which database to use. Use one of the databases listed below.&lt;br /&gt;
&lt;br /&gt;
=== Sqlite ===&lt;br /&gt;
All you need to do is to install the package:&lt;br /&gt;
{{cmd|apk add nextcloud-sqlite}}&lt;br /&gt;
&lt;br /&gt;
=== PostgreSQL ===&lt;br /&gt;
Install the package:&lt;br /&gt;
{{cmd|apk add nextcloud-pgsql postgresql postgresql-client}}&lt;br /&gt;
&lt;br /&gt;
Next thing is to configure and start the database:&lt;br /&gt;
{{cmd|rc-service postgresql setup&lt;br /&gt;
rc-service postgresql start}}&lt;br /&gt;
&lt;br /&gt;
Next, you need to create a user and temporarily grant the CREATEDB privilege:&lt;br /&gt;
{{cmd|psql -U postgres&lt;br /&gt;
CREATE USER mycloud WITH PASSWORD &#039;test123&#039;;&lt;br /&gt;
ALTER ROLE mycloud CREATEDB;&lt;br /&gt;
\q}}&lt;br /&gt;
{{Note|Replace the above username &#039;mycloud&#039; and password &#039;test123&#039; with something secure. Remember these settings. You will need them later when setting up nextcloud.}}&lt;br /&gt;
&lt;br /&gt;
Set postgresql to start on boot/:&lt;br /&gt;
{{cmd|rc-update add postgresql}}&lt;br /&gt;
&lt;br /&gt;
=== MariaDB ===&lt;br /&gt;
Install the package:&lt;br /&gt;
{{cmd|apk add nextcloud-mysql mariadb mariadb-client}}&lt;br /&gt;
&lt;br /&gt;
Now configure and start {{pkg|mariadb}}:&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;mariadb-install-db --user=mysql --datadir=/var/lib/mysql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
service mariadb start&lt;br /&gt;
rc-update add mariadb&lt;br /&gt;
mariadb-secure-installation}}&lt;br /&gt;
Follow the wizard to setup passwords, etc.&lt;br /&gt;
{{Note|Remember the usernames/passwords that you set using the wizard. You will need them later.}}&lt;br /&gt;
&lt;br /&gt;
Next, you need to create a user and database and set permissions:&lt;br /&gt;
{{cmd|mariadb -u root -p&lt;br /&gt;
CREATE DATABASE nextcloud;&lt;br /&gt;
GRANT ALL ON nextcloud.* TO &#039;mycloud&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;test123&#039;;&lt;br /&gt;
GRANT ALL ON nextcloud.* TO &#039;mycloud&#039;@&#039;localhost.localdomain&#039; IDENTIFIED BY &#039;test123&#039;;&lt;br /&gt;
FLUSH PRIVILEGES;&lt;br /&gt;
EXIT}}&lt;br /&gt;
{{Note|Replace the above username &#039;mycloud&#039; and password &#039;test123&#039; with something secure. Remember these settings. You will need them later when setting up nextcloud.}}&lt;br /&gt;
&lt;br /&gt;
{{pkg|mariadb-client}} is not needed anymore. Let&#039;s uninstall it:&lt;br /&gt;
{{cmd|apk del mariadb-client}}&lt;br /&gt;
&lt;br /&gt;
== Webserver ==&lt;br /&gt;
Next thing is to choose, install, and configure a webserver. In this example we will install {{pkg|nginx}} or {{pkg|lighttpd}}. You are free to install any other webserver of your choice as long as it supports PHP and FastCGI. Generating an SSL certificate for your webserver is outside of the scope of this document.&lt;br /&gt;
&lt;br /&gt;
{{pkg|nextcloud-initscript}} facilitates running the webserver with php-fpm.&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add nextcloud-initscript}}&lt;br /&gt;
&lt;br /&gt;
=== Nginx ===&lt;br /&gt;
Install the needed packages:&lt;br /&gt;
{{cmd|apk add nginx}}&lt;br /&gt;
&lt;br /&gt;
Delete the default nginx website configuration:&lt;br /&gt;
{{cmd|rm /etc/nginx/http.d/default.conf}}&lt;br /&gt;
&lt;br /&gt;
Create a configuration file for your site in {{path|/etc/nginx/http.d/mysite.mydomain.com.conf}}:&lt;br /&gt;
{{Cat|/etc/nginx/http.d/mysite.mydomain.com.conf|server {&lt;br /&gt;
        #listen       [::]:80; #uncomment for IPv6 support&lt;br /&gt;
        listen       80;&lt;br /&gt;
	return 301 https://$host$request_uri;&lt;br /&gt;
	server_name mysite.mydomain.com;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
server {&lt;br /&gt;
        #listen       [::]:443 ssl; #uncomment for IPv6 support&lt;br /&gt;
        listen       443 ssl;&lt;br /&gt;
        server_name  mysite.mydomain.com;&lt;br /&gt;
&lt;br /&gt;
	root /usr/share/webapps/nextcloud;&lt;br /&gt;
        index  index.php index.html index.htm;&lt;br /&gt;
	disable_symlinks off;&lt;br /&gt;
&lt;br /&gt;
        ssl_certificate      /etc/ssl/cert.pem;&lt;br /&gt;
        ssl_certificate_key  /etc/ssl/key.pem;&lt;br /&gt;
        ssl_session_timeout  5m;&lt;br /&gt;
&lt;br /&gt;
        #Enable Perfect Forward Secrecy and ciphers without known vulnerabilities&lt;br /&gt;
        #Beware! It breaks compatibility with older OS and browsers (e.g. Windows XP, Android 2.x, etc.)&lt;br /&gt;
	#ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA;&lt;br /&gt;
        #ssl_prefer_server_ciphers  on;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        location / {&lt;br /&gt;
            try_files $uri $uri/ /index.html;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000&lt;br /&gt;
        location ~ [^/]\.php(/&amp;amp;#124;$) {&lt;br /&gt;
                fastcgi_split_path_info ^(.+?\.php)(/.*)$;&lt;br /&gt;
                if (!-f $document_root$fastcgi_script_name) {&lt;br /&gt;
                        return 404;&lt;br /&gt;
                }&lt;br /&gt;
                #fastcgi_pass 127.0.0.1:9000;&lt;br /&gt;
		#fastcgi_pass unix:/run/php-fpm/socket;&lt;br /&gt;
		fastcgi_pass unix:/run/nextcloud/fastcgi.sock; # From the nextcloud-initscript package&lt;br /&gt;
                fastcgi_index index.php;&lt;br /&gt;
                include fastcgi.conf;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
        # Help pass nextcloud&#039;s configuration checks after install:&lt;br /&gt;
        # Per https://docs.nextcloud.com/server/22/admin_manual/issues/general_troubleshooting.html#service-discovery&lt;br /&gt;
        location ^~ /.well-known/carddav { return 301 /remote.php/dav/; }&lt;br /&gt;
        location ^~ /.well-known/caldav { return 301 /remote.php/dav/; }&lt;br /&gt;
        location ^~ /.well-known/webfinger { return 301 /index.php/.well-known/webfinger; }&lt;br /&gt;
        location ^~ /.well-known/nodeinfo { return 301 /index.php/.well-known/nodeinfo; }&lt;br /&gt;
&lt;br /&gt;
        include mime.types;&lt;br /&gt;
        types {&lt;br /&gt;
                text/javascript mjs;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
If you plan to enable uploads - and you probably do) - then you need to modify the default:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
client_max_body_size 1m;&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
setting in {{path|/etc/nginx/nginx.conf}}. For testing purposes, I disabled the limit by changing it to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
client_max_body_size 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This enabled large file uploads and auto-uploads to work. Note, this is a file-size restriction in addition to the restriction set in {{path|/etc/php81/php-fpm.d/nextcloud.conf}}. That second restriction defaults to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
; Maximal size of a file that can be uploaded via web interface.&lt;br /&gt;
php_admin_value[memory_limit] = 512M&lt;br /&gt;
php_admin_value[post_max_size] = 513M&lt;br /&gt;
php_admin_value[upload_max_filesize] = 513M&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another setting that may limit file-size is in configuration file {{path|/etc/php81/php.ini}}, where I set the restriction to to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
upload_max_filesize = 513M&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to match the {{path|/etc/php81/php-fpm.d/nextcloud.conf}} file-size restriction.&lt;br /&gt;
&lt;br /&gt;
If you are running from RAM and you&#039;re dealing with large files you might need to move the FastCGI temp file from {{path|/tmp}} to {{path|/var/tmp}} or to a directory that is mounted on hdd:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastcgi_temp_path /var/tmp/nginx/fastcgi 1 2;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Large file uploads take some time to be processed by php-fpm, so you need to bump the Nginx default read timeout:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastcgi_read_timeout 300s;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|If you are serving several users make sure to tune the *&#039;&#039;pm.max_children&#039;&#039; setting in {{path|/etc/php81/php-fpm.d/nextcloud.conf}}}}&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/nginx/nginx.conf}} should already be configured to load your site config from this directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
# Includes virtual hosts configs.&lt;br /&gt;
include /etc/nginx/http.d/*;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start services:&lt;br /&gt;
{{cmd|service nginx start&lt;br /&gt;
service nextcloud start}}&lt;br /&gt;
&lt;br /&gt;
Enable automatic startup of services:&lt;br /&gt;
{{cmd|rc-update add nginx&lt;br /&gt;
rc-update add nextcloud}}&lt;br /&gt;
&lt;br /&gt;
=== Lighttpd ===&lt;br /&gt;
Install the package:&lt;br /&gt;
{{cmd|apk add lighttpd php5-cgi}}&lt;br /&gt;
&lt;br /&gt;
Make sure you have FastCGI enabled in {{pkg|lighttpd}}:&lt;br /&gt;
{{cat|/etc/lighttpd/lighttpd.conf|...&lt;br /&gt;
include &amp;quot;mod_fastcgi.conf&amp;quot;&lt;br /&gt;
...}}&lt;br /&gt;
&lt;br /&gt;
Start up the webserver:&lt;br /&gt;
{{cmd|rc-service lighttpd start}}&lt;br /&gt;
&lt;br /&gt;
{{tip|You might want to follow the [[Lighttpd_Advanced_security#Https_access|Lighttpd_Https_access]] doc in order to configure lighttpd to use https &#039;&#039;(securing your connections to your nextcloud server)&#039;&#039;.}}&lt;br /&gt;
&lt;br /&gt;
Link {{pkg|nextcloud}} installation to web server directory:&lt;br /&gt;
{{cmd|ln -s /usr/share/webapps/nextcloud /var/www/localhost/htdocs}}&lt;br /&gt;
&lt;br /&gt;
== Firewall ==&lt;br /&gt;
Next up, open the desired port for the webserver in the firewall. You can use the following snippet as a reference for an nftable rule in a new file{{path|/etc/nftables.d/50-https.nft}}:&lt;br /&gt;
{{Cat|/etc/nftables.d/50-https.nft|&lt;br /&gt;
#!/usr/sbin/nft -f&lt;br /&gt;
&lt;br /&gt;
table inet filter {&lt;br /&gt;
	chain input {&lt;br /&gt;
		# allow https&lt;br /&gt;
		tcp dport 443 accept comment &amp;quot;accept HTTPS&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Other settings ==&lt;br /&gt;
=== Hardening ===&lt;br /&gt;
Consider updating the variable &amp;lt;code&amp;gt;url.access-deny&amp;lt;/code&amp;gt; in {{path|/etc/lighttpd/lighttpd.conf}} for additional security. Add &amp;lt;code&amp;gt;&amp;quot;config.php&amp;quot;&amp;lt;/code&amp;gt; to the variable &#039;&#039;(that&#039;s where the database is stored)&#039;&#039; so it looks something like this:&lt;br /&gt;
{{cat|/etc/lighttpd/lighttpd.conf|...&lt;br /&gt;
url.access-deny {{=}} (&amp;quot;~&amp;quot;, &amp;quot;.inc&amp;quot;, &amp;quot;config.php&amp;quot;)&lt;br /&gt;
...}}&lt;br /&gt;
Restart {{pkg|lighttpd}} to activate the changes:&lt;br /&gt;
{{cmd|rc-service lighttpd restart}}&lt;br /&gt;
&lt;br /&gt;
=== Additional packages ===&lt;br /&gt;
Some large apps, such as pdfviewer, texteditor, notifications and videoplayer are in separate packages:&lt;br /&gt;
{{cmd|apk add nextcloud-files_pdfviewer nextcloud-text nextcloud-notifications nextcloud-files_videoplayer nextcloud-files_external}}&lt;br /&gt;
You can also install the {{pkg|nextcloud-default-apps}} meta-package which installs all 30 core Nextcloud apps (listed as dependencies under aforementioned link):&lt;br /&gt;
{{cmd|apk add nextcloud-default-apps}}&lt;br /&gt;
&lt;br /&gt;
=== How To Create a Self-Signed SSL Certificate ===&lt;br /&gt;
Install openssl:&lt;br /&gt;
{{cmd|apk add openssl}}&lt;br /&gt;
Generate your self signed certificate and its private key:&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/ssl1.1/private/nextcloud-selfsigned.key -out /etc/ssl1.1/certs/nextcloud-selfsigned.crt&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Edit your nginx configuration:&lt;br /&gt;
{{cat|/etc/nginx/http.d/mysite.mydomain.com.conf|&lt;br /&gt;
ssl_certificate      /etc/ssl1.1/certs/nextcloud-selfsigned.crt;&lt;br /&gt;
ssl_certificate_key  /etc/ssl1.1/private/nextcloud-selfsigned.key;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== How To Install and Set Up Auto-Renewing LetsEncrypt SSL Certificate ===&lt;br /&gt;
After first setting up the Nextcloud server using the instructions in the &#039;Configure and use Nextcloud&#039; section below, I then followed the SSL-setup instructions at: [[https://techjogging.com/create-letsencrypt-certificate-alpine-nginx.html Tech Jogging]].&lt;br /&gt;
&lt;br /&gt;
I also had to add my Nextcloud servers Fully Qualified Domain Name (FQDN) to the list of trusted domains in /etc/nextcloud/config.php. In the section labelled: &#039;trusted_domains&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;trusted_domains&#039; =&amp;gt;&lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &#039;&amp;lt;machine&#039;s local IP address&amp;gt;&#039;,&lt;br /&gt;
    1 =&amp;gt; &#039;nextcloud.mydomain.com&#039;,&lt;br /&gt;
  ),&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Configure and use Nextcloud =&lt;br /&gt;
&lt;br /&gt;
== Configure ==&lt;br /&gt;
Point your browser at &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://mysite.mydomain.com&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and follow the on-screen instructions to complete the installation, supplying the database user and password created before.&lt;br /&gt;
&lt;br /&gt;
== Hardening PostgreSQL ==&lt;br /&gt;
If you have chosen PGSQL backend, revoke CREATEDB privilege from &#039;mycloud&#039; user:&lt;br /&gt;
{{cmd|psql -U postgres&lt;br /&gt;
ALTER ROLE mycloud NOCREATEDB;&lt;br /&gt;
\q}}&lt;br /&gt;
&lt;br /&gt;
== Increase upload size ==&lt;br /&gt;
 {{path|/etc/php81/php-fpm.d/nextcloud.conf}} has overridden default file sizes, but they can be modified further to suit your needs:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
; Maximal size of a file that can be uploaded via web interface.&lt;br /&gt;
php_admin_value[memory_limit] = 512M&lt;br /&gt;
php_admin_value[post_max_size] = 513M&lt;br /&gt;
php_admin_value[upload_max_filesize] = 513M&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable opcache for nginx/php81 ==&lt;br /&gt;
To increase performace install&lt;br /&gt;
{{cmd|apk add php81-opcache}}&lt;br /&gt;
&lt;br /&gt;
Now uncomment/edit lines in /etc/php81/php.ini:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
opcache.enable=1&lt;br /&gt;
opcache.enable_cli=1&lt;br /&gt;
opcache.interned_strings_buffer=8&lt;br /&gt;
opcache.max_accelerated_files=10000&lt;br /&gt;
opcache.memory_consumption=128 //you can reduce this slightly when short on RAM&lt;br /&gt;
opcache.save_comments=1&lt;br /&gt;
opcache.revalidate_freq=1&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart php-fpm81&lt;br /&gt;
{{cmd|rc-service php-fpm81 restart}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Enable thumbnail for video ==&lt;br /&gt;
&lt;br /&gt;
To be able to generate thumbnails for videos, besides [https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/previews_configuration.html configuring] nextcloud, you will need to unlist &amp;lt;code&amp;gt;proc_open&amp;lt;/code&amp;gt; from php&#039;s disabled functions. PHP relies on that function to call ffmpeg to generate the thumbnails, without that it will fail to do so even if you have it enabled on config.php.&lt;br /&gt;
&lt;br /&gt;
Remove &amp;lt;code&amp;gt;proc_open&amp;lt;/code&amp;gt; from the disabled function in {{path|/etc/php81/php-fpm.d/nextcloud.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
; Disable certain functions for security reasons.&lt;br /&gt;
; http://php.net/disable-functions&lt;br /&gt;
php_admin_value[disable_functions] = exec,passthru,shell_exec,system,curl_multi_exec,show_source&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now add &amp;lt;code&amp;gt;&#039;OC\\Preview\\Movie&#039;&amp;lt;/code&amp;gt; to the list of &amp;lt;code&amp;gt;&#039;enabledPreviewProviders&#039;&amp;lt;/code&amp;gt; and have ffmpeg installed:&lt;br /&gt;
{{cmd|apk add ffmpeg}}&lt;br /&gt;
&lt;br /&gt;
After restarting the fpm service it should start generating thumbnails for videos.&lt;br /&gt;
&lt;br /&gt;
== Clients ==&lt;br /&gt;
There are clients available for many platforms, Android included:&lt;br /&gt;
* https://nextcloud.org/sync-clients/{{dead link}} &#039;&#039;(nextcloud Sync clients)&#039;&#039;&lt;br /&gt;
* https://nextcloud.com/install/ &#039;&#039;(Android client)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{pkg|nextcloud-client}} is currently available in the community repo.&lt;br /&gt;
&lt;br /&gt;
= Video Communication =&lt;br /&gt;
One of the major features of Nextcloud 11, available on Alpine 3.6 (currently edge) is a [https://nextcloud.com/webrtc/ WebRTC app], which relies on Spreed WebRTC server, which is available in the Alpine testing repository. Everything is still beta, so be aware of it :-). If you want a private video conferencing server install Nextcloud using Nginx and do the following (you can use Apache as well and follow the &#039;&#039;Apache config&#039;&#039; instructions [https://nextcloud.com/webrtc/ nextcloud.com]):&lt;br /&gt;
&lt;br /&gt;
Put the following config in the &#039;&#039;server&#039;&#039; section of Nginx:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Spreed WebRTC&lt;br /&gt;
location ^~ /webrtc {&lt;br /&gt;
  proxy_pass http://127.0.0.1:8080;&lt;br /&gt;
  proxy_http_version 1.1;&lt;br /&gt;
  proxy_set_header Upgrade $http_upgrade;&lt;br /&gt;
  proxy_set_header Connection $connection_upgrade;&lt;br /&gt;
  proxy_set_header X-Forwarded-Proto $scheme;&lt;br /&gt;
  proxy_set_header Host $http_host;&lt;br /&gt;
  proxy_set_header X-Real-IP $remote_addr;&lt;br /&gt;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;&lt;br /&gt;
&lt;br /&gt;
  proxy_buffering             on;&lt;br /&gt;
  proxy_ignore_client_abort   off;&lt;br /&gt;
  proxy_redirect              off;&lt;br /&gt;
  proxy_connect_timeout       90;&lt;br /&gt;
  proxy_send_timeout          90;&lt;br /&gt;
  proxy_read_timeout          90;&lt;br /&gt;
  proxy_buffer_size           4k;&lt;br /&gt;
  proxy_buffers               4 32k;&lt;br /&gt;
  proxy_busy_buffers_size     64k;&lt;br /&gt;
  proxy_temp_file_write_size  64k;&lt;br /&gt;
  proxy_next_upstream         error timeout invalid_header http_502 http_503 http_504;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Put the following section in the &#039;&#039;http&#039;&#039; section of Nginx:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
map $http_upgrade $connection_upgrade {&lt;br /&gt;
  default upgrade;&lt;br /&gt;
  &#039;&#039;      close;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reload Nginx:&lt;br /&gt;
{{cmd|rc-service nginx reload}}&lt;br /&gt;
&lt;br /&gt;
Install Spreed WedRTC server (make sure you have the testing [https://wiki.alpinelinux.org/wiki/Alpine_Linux_package_management#Packages_and_Repositories repository] enabled):&lt;br /&gt;
{{cmd|apk add spreed-web-server}}&lt;br /&gt;
&lt;br /&gt;
Using the configuration file in &#039;&#039;/etc/spreed-webrtc/spreed-webrtc-server.conf&#039;&#039; follow the instructions at [https://nextcloud.com/webrtc/ nextcloud.com] to configure Spreed WebRTC server. Then start the server:&lt;br /&gt;
{{cmd|rc-service spreed-web-server start}}&lt;br /&gt;
{{cmd|rc-update add spreed-web-server}}&lt;br /&gt;
&lt;br /&gt;
Install the &#039;&#039;Spreed video calls&#039;&#039; app in Nextcloud and enjoy your private video calls.&lt;br /&gt;
&lt;br /&gt;
= Nextcloud CLI occ =&lt;br /&gt;
&lt;br /&gt;
Install it first&lt;br /&gt;
{{cmd|apk add nextcloud-occ}}&lt;br /&gt;
&lt;br /&gt;
Access to nextcloud&#039;s CLI tool occ. Please be aware of which &amp;quot;php8x&amp;quot; version your installed version of Nextcloud is using and update the below commands accordingly. In the below examples, the system is using php82.&lt;br /&gt;
&lt;br /&gt;
If using doas:&lt;br /&gt;
{{cmd|doas -u nextcloud php82 /usr/share/webapps/nextcloud/occ}}&lt;br /&gt;
&lt;br /&gt;
If using sudo:&lt;br /&gt;
{{cmd|sudo -u nextcloud php82 /usr/share/webapps/nextcloud/occ}}&lt;br /&gt;
&lt;br /&gt;
= Upgrading =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re using alpine stable, rather than edge, be aware when an upgrade skips a major release version: Nextcloud doesn&#039;t support skipping a major release version in its upgrade path. For this reason, alpine also packages the previous nextcloud release as a separate package.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://wiki.archlinux.org/title/Nextcloud Nextcloud - Archwiki]&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Talk:How-To_Alpine_Wall&amp;diff=29875</id>
		<title>Talk:How-To Alpine Wall</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Talk:How-To_Alpine_Wall&amp;diff=29875"/>
		<updated>2025-05-20T13:15:02Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: Added helpful resource&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article is confusing, but I discovered https://www.cyberciti.biz/faq/how-to-set-up-a-firewall-with-awall-on-alpine-linux/ which was very helpful to configure awall. Should this be included in &amp;quot;See also&amp;quot; section of this wiki page? [[User:Jahway603|Jahway603]] ([[User talk:Jahway603|talk]])&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Nextcloud&amp;diff=29872</id>
		<title>Nextcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Nextcloud&amp;diff=29872"/>
		<updated>2025-05-19T17:10:16Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: /* Nextcloud CLI occ */  added doas example and clarified to check which php version the user is using&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://nextcloud.com/ Nextcloud] is WedDAV-based solution for storing and sharing on-line your data, files, images, video, music, calendars and contacts. [https://karlitschek.de/2016/06/nextcloud/ Nextcloud is a fork of ownCloud with enterprise features included].&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
{{pkg|nextcloud}} is available in Alpine 3.5 and greater.&lt;br /&gt;
&lt;br /&gt;
Before you start installing anything, make sure you have the latest packages available. Make sure you are using an &#039;http&#039; repository in your {{path|/etc/apk/repositories}} file, then:&lt;br /&gt;
{{cmd|apk update}}&lt;br /&gt;
{{tip|Detailed information is found in [[Include:Upgrading_to_latest_release|this]] doc.}}&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
First you have to decide which database to use. Use one of the databases listed below.&lt;br /&gt;
&lt;br /&gt;
=== Sqlite ===&lt;br /&gt;
All you need to do is to install the package:&lt;br /&gt;
{{cmd|apk add nextcloud-sqlite}}&lt;br /&gt;
&lt;br /&gt;
=== PostgreSQL ===&lt;br /&gt;
Install the package:&lt;br /&gt;
{{cmd|apk add nextcloud-pgsql postgresql postgresql-client}}&lt;br /&gt;
&lt;br /&gt;
Next thing is to configure and start the database:&lt;br /&gt;
{{cmd|rc-service postgresql setup&lt;br /&gt;
rc-service postgresql start}}&lt;br /&gt;
&lt;br /&gt;
Next, you need to create a user and temporarily grant the CREATEDB privilege:&lt;br /&gt;
{{cmd|psql -U postgres&lt;br /&gt;
CREATE USER mycloud WITH PASSWORD &#039;test123&#039;;&lt;br /&gt;
ALTER ROLE mycloud CREATEDB;&lt;br /&gt;
\q}}&lt;br /&gt;
{{Note|Replace the above username &#039;mycloud&#039; and password &#039;test123&#039; with something secure. Remember these settings. You will need them later when setting up nextcloud.}}&lt;br /&gt;
&lt;br /&gt;
Set postgresql to start on boot/:&lt;br /&gt;
{{cmd|rc-update add postgresql}}&lt;br /&gt;
&lt;br /&gt;
=== MariaDB ===&lt;br /&gt;
Install the package:&lt;br /&gt;
{{cmd|apk add nextcloud-mysql mariadb mariadb-client}}&lt;br /&gt;
&lt;br /&gt;
Now configure and start {{pkg|mariadb}}:&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;mariadb-install-db --user=mysql --datadir=/var/lib/mysql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
service mariadb start&lt;br /&gt;
rc-update add mariadb&lt;br /&gt;
mariadb-secure-installation}}&lt;br /&gt;
Follow the wizard to setup passwords, etc.&lt;br /&gt;
{{Note|Remember the usernames/passwords that you set using the wizard. You will need them later.}}&lt;br /&gt;
&lt;br /&gt;
Next, you need to create a user and database and set permissions:&lt;br /&gt;
{{cmd|mariadb -u root -p&lt;br /&gt;
CREATE DATABASE nextcloud;&lt;br /&gt;
GRANT ALL ON nextcloud.* TO &#039;mycloud&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;test123&#039;;&lt;br /&gt;
GRANT ALL ON nextcloud.* TO &#039;mycloud&#039;@&#039;localhost.localdomain&#039; IDENTIFIED BY &#039;test123&#039;;&lt;br /&gt;
FLUSH PRIVILEGES;&lt;br /&gt;
EXIT}}&lt;br /&gt;
{{Note|Replace the above username &#039;mycloud&#039; and password &#039;test123&#039; with something secure. Remember these settings. You will need them later when setting up nextcloud.}}&lt;br /&gt;
&lt;br /&gt;
{{pkg|mariadb-client}} is not needed anymore. Let&#039;s uninstall it:&lt;br /&gt;
{{cmd|apk del mariadb-client}}&lt;br /&gt;
&lt;br /&gt;
== Webserver ==&lt;br /&gt;
Next thing is to choose, install, and configure a webserver. In this example we will install {{pkg|nginx}} or {{pkg|lighttpd}}. You are free to install any other webserver of your choice as long as it supports PHP and FastCGI. Generating an SSL certificate for your webserver is outside of the scope of this document.&lt;br /&gt;
&lt;br /&gt;
{{pkg|nextcloud-initscript}} facilitates running the webserver with php-fpm.&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add nextcloud-initscript}}&lt;br /&gt;
&lt;br /&gt;
=== Nginx ===&lt;br /&gt;
Install the needed packages:&lt;br /&gt;
{{cmd|apk add nginx}}&lt;br /&gt;
&lt;br /&gt;
Delete the default nginx website configuration:&lt;br /&gt;
{{cmd|rm /etc/nginx/http.d/default.conf}}&lt;br /&gt;
&lt;br /&gt;
Create a configuration file for your site in {{path|/etc/nginx/http.d/mysite.mydomain.com.conf}}:&lt;br /&gt;
{{Cat|/etc/nginx/http.d/mysite.mydomain.com.conf|server {&lt;br /&gt;
        #listen       [::]:80; #uncomment for IPv6 support&lt;br /&gt;
        listen       80;&lt;br /&gt;
	return 301 https://$host$request_uri;&lt;br /&gt;
	server_name mysite.mydomain.com;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
server {&lt;br /&gt;
        #listen       [::]:443 ssl; #uncomment for IPv6 support&lt;br /&gt;
        listen       443 ssl;&lt;br /&gt;
        server_name  mysite.mydomain.com;&lt;br /&gt;
&lt;br /&gt;
	root /usr/share/webapps/nextcloud;&lt;br /&gt;
        index  index.php index.html index.htm;&lt;br /&gt;
	disable_symlinks off;&lt;br /&gt;
&lt;br /&gt;
        ssl_certificate      /etc/ssl/cert.pem;&lt;br /&gt;
        ssl_certificate_key  /etc/ssl/key.pem;&lt;br /&gt;
        ssl_session_timeout  5m;&lt;br /&gt;
&lt;br /&gt;
        #Enable Perfect Forward Secrecy and ciphers without known vulnerabilities&lt;br /&gt;
        #Beware! It breaks compatibility with older OS and browsers (e.g. Windows XP, Android 2.x, etc.)&lt;br /&gt;
	#ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA;&lt;br /&gt;
        #ssl_prefer_server_ciphers  on;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        location / {&lt;br /&gt;
            try_files $uri $uri/ /index.html;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000&lt;br /&gt;
        location ~ [^/]\.php(/&amp;amp;#124;$) {&lt;br /&gt;
                fastcgi_split_path_info ^(.+?\.php)(/.*)$;&lt;br /&gt;
                if (!-f $document_root$fastcgi_script_name) {&lt;br /&gt;
                        return 404;&lt;br /&gt;
                }&lt;br /&gt;
                #fastcgi_pass 127.0.0.1:9000;&lt;br /&gt;
		#fastcgi_pass unix:/run/php-fpm/socket;&lt;br /&gt;
		fastcgi_pass unix:/run/nextcloud/fastcgi.sock; # From the nextcloud-initscript package&lt;br /&gt;
                fastcgi_index index.php;&lt;br /&gt;
                include fastcgi.conf;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
        # Help pass nextcloud&#039;s configuration checks after install:&lt;br /&gt;
        # Per https://docs.nextcloud.com/server/22/admin_manual/issues/general_troubleshooting.html#service-discovery&lt;br /&gt;
        location ^~ /.well-known/carddav { return 301 /remote.php/dav/; }&lt;br /&gt;
        location ^~ /.well-known/caldav { return 301 /remote.php/dav/; }&lt;br /&gt;
        location ^~ /.well-known/webfinger { return 301 /index.php/.well-known/webfinger; }&lt;br /&gt;
        location ^~ /.well-known/nodeinfo { return 301 /index.php/.well-known/nodeinfo; }&lt;br /&gt;
&lt;br /&gt;
        include mime.types;&lt;br /&gt;
        types {&lt;br /&gt;
                text/javascript mjs;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
If you plan to enable uploads - and you probably do) - then you need to modify the default:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
client_max_body_size 1m;&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
setting in {{path|/etc/nginx/nginx.conf}}. For testing purposes, I disabled the limit by changing it to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
client_max_body_size 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This enabled large file uploads and auto-uploads to work. Note, this is a file-size restriction in addition to the restriction set in {{path|/etc/php81/php-fpm.d/nextcloud.conf}}. That second restriction defaults to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
; Maximal size of a file that can be uploaded via web interface.&lt;br /&gt;
php_admin_value[memory_limit] = 512M&lt;br /&gt;
php_admin_value[post_max_size] = 513M&lt;br /&gt;
php_admin_value[upload_max_filesize] = 513M&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another setting that may limit file-size is in configuration file {{path|/etc/php81/php.ini}}, where I set the restriction to to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
upload_max_filesize = 513M&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to match the {{path|/etc/php81/php-fpm.d/nextcloud.conf}} file-size restriction.&lt;br /&gt;
&lt;br /&gt;
If you are running from RAM and you&#039;re dealing with large files you might need to move the FastCGI temp file from {{path|/tmp}} to {{path|/var/tmp}} or to a directory that is mounted on hdd:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastcgi_temp_path /var/tmp/nginx/fastcgi 1 2;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Large file uploads take some time to be processed by php-fpm, so you need to bump the Nginx default read timeout:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastcgi_read_timeout 300s;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|If you are serving several users make sure to tune the *&#039;&#039;pm.max_children&#039;&#039; setting in {{path|/etc/php81/php-fpm.d/nextcloud.conf}}}}&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/nginx/nginx.conf}} should already be configured to load your site config from this directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
# Includes virtual hosts configs.&lt;br /&gt;
include /etc/nginx/http.d/*;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start services:&lt;br /&gt;
{{cmd|service nginx start&lt;br /&gt;
service nextcloud start}}&lt;br /&gt;
&lt;br /&gt;
Enable automatic startup of services:&lt;br /&gt;
{{cmd|rc-update add nginx&lt;br /&gt;
rc-update add nextcloud}}&lt;br /&gt;
&lt;br /&gt;
=== Lighttpd ===&lt;br /&gt;
Install the package:&lt;br /&gt;
{{cmd|apk add lighttpd php5-cgi}}&lt;br /&gt;
&lt;br /&gt;
Make sure you have FastCGI enabled in {{pkg|lighttpd}}:&lt;br /&gt;
{{cat|/etc/lighttpd/lighttpd.conf|...&lt;br /&gt;
include &amp;quot;mod_fastcgi.conf&amp;quot;&lt;br /&gt;
...}}&lt;br /&gt;
&lt;br /&gt;
Start up the webserver:&lt;br /&gt;
{{cmd|rc-service lighttpd start}}&lt;br /&gt;
&lt;br /&gt;
{{tip|You might want to follow the [[Lighttpd_Advanced_security#Https_access|Lighttpd_Https_access]] doc in order to configure lighttpd to use https &#039;&#039;(securing your connections to your nextcloud server)&#039;&#039;.}}&lt;br /&gt;
&lt;br /&gt;
Link {{pkg|nextcloud}} installation to web server directory:&lt;br /&gt;
{{cmd|ln -s /usr/share/webapps/nextcloud /var/www/localhost/htdocs}}&lt;br /&gt;
&lt;br /&gt;
== Firewall ==&lt;br /&gt;
Next up, open the desired port for the webserver in the firewall. You can use the following snippet as a reference for an nftable rule in a new file{{path|/etc/nftables.d/50-https.nft}}:&lt;br /&gt;
{{Cat|/etc/nftables.d/50-https.nft|&lt;br /&gt;
#!/usr/sbin/nft -f&lt;br /&gt;
&lt;br /&gt;
table inet filter {&lt;br /&gt;
	chain input {&lt;br /&gt;
		# allow https&lt;br /&gt;
		tcp dport 443 accept comment &amp;quot;accept HTTPS&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Other settings ==&lt;br /&gt;
=== Hardening ===&lt;br /&gt;
Consider updating the variable &amp;lt;code&amp;gt;url.access-deny&amp;lt;/code&amp;gt; in {{path|/etc/lighttpd/lighttpd.conf}} for additional security. Add &amp;lt;code&amp;gt;&amp;quot;config.php&amp;quot;&amp;lt;/code&amp;gt; to the variable &#039;&#039;(that&#039;s where the database is stored)&#039;&#039; so it looks something like this:&lt;br /&gt;
{{cat|/etc/lighttpd/lighttpd.conf|...&lt;br /&gt;
url.access-deny {{=}} (&amp;quot;~&amp;quot;, &amp;quot;.inc&amp;quot;, &amp;quot;config.php&amp;quot;)&lt;br /&gt;
...}}&lt;br /&gt;
Restart {{pkg|lighttpd}} to activate the changes:&lt;br /&gt;
{{cmd|rc-service lighttpd restart}}&lt;br /&gt;
&lt;br /&gt;
=== Additional packages ===&lt;br /&gt;
Some large apps, such as pdfviewer, texteditor, notifications and videoplayer are in separate packages:&lt;br /&gt;
{{cmd|apk add nextcloud-files_pdfviewer nextcloud-text nextcloud-notifications nextcloud-files_videoplayer nextcloud-files_external}}&lt;br /&gt;
You can also install the {{pkg|nextcloud-default-apps}} meta-package which installs all 30 core Nextcloud apps (listed as dependencies under aforementioned link):&lt;br /&gt;
{{cmd|apk add nextcloud-default-apps}}&lt;br /&gt;
&lt;br /&gt;
=== How To Create a Self-Signed SSL Certificate ===&lt;br /&gt;
Install openssl:&lt;br /&gt;
{{cmd|apk add openssl}}&lt;br /&gt;
Generate your self signed certificate and its private key:&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/ssl1.1/private/nextcloud-selfsigned.key -out /etc/ssl1.1/certs/nextcloud-selfsigned.crt&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Edit your nginx configuration:&lt;br /&gt;
{{cat|/etc/nginx/http.d/mysite.mydomain.com.conf|&lt;br /&gt;
ssl_certificate      /etc/ssl1.1/certs/nextcloud-selfsigned.crt;&lt;br /&gt;
ssl_certificate_key  /etc/ssl1.1/private/nextcloud-selfsigned.key;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== How To Install and Set Up Auto-Renewing LetsEncrypt SSL Certificate ===&lt;br /&gt;
After first setting up the Nextcloud server using the instructions in the &#039;Configure and use Nextcloud&#039; section below, I then followed the SSL-setup instructions at: [[https://techjogging.com/create-letsencrypt-certificate-alpine-nginx.html Tech Jogging]].&lt;br /&gt;
&lt;br /&gt;
I also had to add my Nextcloud servers Fully Qualified Domain Name (FQDN) to the list of trusted domains in /etc/nextcloud/config.php. In the section labelled: &#039;trusted_domains&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;trusted_domains&#039; =&amp;gt;&lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &#039;&amp;lt;machine&#039;s local IP address&amp;gt;&#039;,&lt;br /&gt;
    1 =&amp;gt; &#039;nextcloud.mydomain.com&#039;,&lt;br /&gt;
  ),&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Configure and use Nextcloud =&lt;br /&gt;
&lt;br /&gt;
== Configure ==&lt;br /&gt;
Point your browser at &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://mysite.mydomain.com&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and follow the on-screen instructions to complete the installation, supplying the database user and password created before.&lt;br /&gt;
&lt;br /&gt;
== Hardening PostgreSQL ==&lt;br /&gt;
If you have chosen PGSQL backend, revoke CREATEDB privilege from &#039;mycloud&#039; user:&lt;br /&gt;
{{cmd|psql -U postgres&lt;br /&gt;
ALTER ROLE mycloud NOCREATEDB;&lt;br /&gt;
\q}}&lt;br /&gt;
&lt;br /&gt;
== Increase upload size ==&lt;br /&gt;
 {{path|/etc/php81/php-fpm.d/nextcloud.conf}} has overridden default file sizes, but they can be modified further to suit your needs:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
; Maximal size of a file that can be uploaded via web interface.&lt;br /&gt;
php_admin_value[memory_limit] = 512M&lt;br /&gt;
php_admin_value[post_max_size] = 513M&lt;br /&gt;
php_admin_value[upload_max_filesize] = 513M&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable opcache for nginx/php81 ==&lt;br /&gt;
To increase performace install&lt;br /&gt;
{{cmd|apk add php81-opcache}}&lt;br /&gt;
&lt;br /&gt;
Now uncomment/edit lines in /etc/php81/php.ini:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
opcache.enable=1&lt;br /&gt;
opcache.enable_cli=1&lt;br /&gt;
opcache.interned_strings_buffer=8&lt;br /&gt;
opcache.max_accelerated_files=10000&lt;br /&gt;
opcache.memory_consumption=128 //you can reduce this slightly when short on RAM&lt;br /&gt;
opcache.save_comments=1&lt;br /&gt;
opcache.revalidate_freq=1&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart php-fpm81&lt;br /&gt;
{{cmd|rc-service php-fpm81 restart}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Enable thumbnail for video ==&lt;br /&gt;
&lt;br /&gt;
To be able to generate thumbnails for videos, besides [https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/previews_configuration.html configuring] nextcloud, you will need to unlist &amp;lt;code&amp;gt;proc_open&amp;lt;/code&amp;gt; from php&#039;s disabled functions. PHP relies on that function to call ffmpeg to generate the thumbnails, without that it will fail to do so even if you have it enabled on config.php.&lt;br /&gt;
&lt;br /&gt;
Remove &amp;lt;code&amp;gt;proc_open&amp;lt;/code&amp;gt; from the disabled function in {{path|/etc/php81/php-fpm.d/nextcloud.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
; Disable certain functions for security reasons.&lt;br /&gt;
; http://php.net/disable-functions&lt;br /&gt;
php_admin_value[disable_functions] = exec,passthru,shell_exec,system,curl_multi_exec,show_source&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now add &amp;lt;code&amp;gt;&#039;OC\\Preview\\Movie&#039;&amp;lt;/code&amp;gt; to the list of &amp;lt;code&amp;gt;&#039;enabledPreviewProviders&#039;&amp;lt;/code&amp;gt; and have ffmpeg installed:&lt;br /&gt;
{{cmd|apk add ffmpeg}}&lt;br /&gt;
&lt;br /&gt;
After restarting the fpm service it should start generating thumbnails for videos.&lt;br /&gt;
&lt;br /&gt;
== Clients ==&lt;br /&gt;
There are clients available for many platforms, Android included:&lt;br /&gt;
* https://nextcloud.org/sync-clients/{{dead link}} &#039;&#039;(nextcloud Sync clients)&#039;&#039;&lt;br /&gt;
* https://nextcloud.com/install/ &#039;&#039;(Android client)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{pkg|nextcloud-client}} is currently available in the community repo.&lt;br /&gt;
&lt;br /&gt;
= Video Communication =&lt;br /&gt;
One of the major features of Nextcloud 11, available on Alpine 3.6 (currently edge) is a [https://nextcloud.com/webrtc/ WebRTC app], which relies on Spreed WebRTC server, which is available in the Alpine testing repository. Everything is still beta, so be aware of it :-). If you want a private video conferencing server install Nextcloud using Nginx and do the following (you can use Apache as well and follow the &#039;&#039;Apache config&#039;&#039; instructions [https://nextcloud.com/webrtc/ nextcloud.com]):&lt;br /&gt;
&lt;br /&gt;
Put the following config in the &#039;&#039;server&#039;&#039; section of Nginx:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Spreed WebRTC&lt;br /&gt;
location ^~ /webrtc {&lt;br /&gt;
  proxy_pass http://127.0.0.1:8080;&lt;br /&gt;
  proxy_http_version 1.1;&lt;br /&gt;
  proxy_set_header Upgrade $http_upgrade;&lt;br /&gt;
  proxy_set_header Connection $connection_upgrade;&lt;br /&gt;
  proxy_set_header X-Forwarded-Proto $scheme;&lt;br /&gt;
  proxy_set_header Host $http_host;&lt;br /&gt;
  proxy_set_header X-Real-IP $remote_addr;&lt;br /&gt;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;&lt;br /&gt;
&lt;br /&gt;
  proxy_buffering             on;&lt;br /&gt;
  proxy_ignore_client_abort   off;&lt;br /&gt;
  proxy_redirect              off;&lt;br /&gt;
  proxy_connect_timeout       90;&lt;br /&gt;
  proxy_send_timeout          90;&lt;br /&gt;
  proxy_read_timeout          90;&lt;br /&gt;
  proxy_buffer_size           4k;&lt;br /&gt;
  proxy_buffers               4 32k;&lt;br /&gt;
  proxy_busy_buffers_size     64k;&lt;br /&gt;
  proxy_temp_file_write_size  64k;&lt;br /&gt;
  proxy_next_upstream         error timeout invalid_header http_502 http_503 http_504;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Put the following section in the &#039;&#039;http&#039;&#039; section of Nginx:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
map $http_upgrade $connection_upgrade {&lt;br /&gt;
  default upgrade;&lt;br /&gt;
  &#039;&#039;      close;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reload Nginx:&lt;br /&gt;
{{cmd|rc-service nginx reload}}&lt;br /&gt;
&lt;br /&gt;
Install Spreed WedRTC server (make sure you have the testing [https://wiki.alpinelinux.org/wiki/Alpine_Linux_package_management#Packages_and_Repositories repository] enabled):&lt;br /&gt;
{{cmd|apk add spreed-web-server}}&lt;br /&gt;
&lt;br /&gt;
Using the configuration file in &#039;&#039;/etc/spreed-webrtc/spreed-webrtc-server.conf&#039;&#039; follow the instructions at [https://nextcloud.com/webrtc/ nextcloud.com] to configure Spreed WebRTC server. Then start the server:&lt;br /&gt;
{{cmd|rc-service spreed-web-server start}}&lt;br /&gt;
{{cmd|rc-update add spreed-web-server}}&lt;br /&gt;
&lt;br /&gt;
Install the &#039;&#039;Spreed video calls&#039;&#039; app in Nextcloud and enjoy your private video calls.&lt;br /&gt;
&lt;br /&gt;
= Nextcloud CLI occ =&lt;br /&gt;
&lt;br /&gt;
Access to nextcloud&#039;s CLI tool occ (be mindful of which `php8x` version you are using and update your command accordingly - in the example it is php82):&lt;br /&gt;
&lt;br /&gt;
If using `doas`:&lt;br /&gt;
{{cmd|doas -u nextcloud php82 /usr/share/webapps/nextcloud/occ}}&lt;br /&gt;
&lt;br /&gt;
If using `sudo`:&lt;br /&gt;
{{cmd|sudo -u nextcloud php82 /usr/share/webapps/nextcloud/occ}}&lt;br /&gt;
&lt;br /&gt;
= Upgrading =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re using alpine stable, rather than edge, be aware when an upgrade skips a major release version: Nextcloud doesn&#039;t support skipping a major release version in its upgrade path. For this reason, alpine also packages the previous nextcloud release as a separate package.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://wiki.archlinux.org/title/Nextcloud Nextcloud - Archwiki]&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Talk:Nextcloud&amp;diff=29871</id>
		<title>Talk:Nextcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Talk:Nextcloud&amp;diff=29871"/>
		<updated>2025-05-19T17:07:49Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are a few missing steps that turn into warnings in the UI&lt;br /&gt;
&lt;br /&gt;
* enabling APCu or another cache&lt;br /&gt;
  (set in a apcu.ini AND config.php)&lt;br /&gt;
&lt;br /&gt;
Is there a reason why php5-fpm is recommended instead of php7-fpm?&lt;br /&gt;
Php5 isn&#039;t supported by many applications anymore and will soon become deprecated.&lt;br /&gt;
&lt;br /&gt;
== Descriptions for additional nextcloud packages is missing ==&lt;br /&gt;
&lt;br /&gt;
There is no list or descriptions for additional nextcloud packages on this wiki article. I just upgraded my Alpine install and would like determine which additional packages I should install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&amp;lt;span class=&amp;quot;autosigned&amp;quot;&amp;gt;—&amp;amp;nbsp;Preceding [[Help:Signature|unsigned]] comment added by [[User:Jahway603|Jahway603]] ([[User talk:Jahway603|{{int:talkpagelinktext}}]] • [[Special:Contributions/Jahway603|{{int:contribslink}}]]) 12:31, 19 April 2023‎&amp;lt;/span&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Default Data Directory Info is missing ==&lt;br /&gt;
&lt;br /&gt;
Unsure where in this wiki the Nextcloud default data directory of `/var/lib/nextcloud/data` should be entered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&amp;lt;span class=&amp;quot;autosigned&amp;quot;&amp;gt;—&amp;amp;nbsp;Preceding [[Help:Signature|unsigned]] comment added by [[User:Jahway603|Jahway603]] ([[User talk:Jahway603|{{int:talkpagelinktext}}]] • [[Special:Contributions/Jahway603|{{int:contribslink}}]]) 09:29, 15 December 2023‎&amp;lt;/span&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Nginx Config update ==&lt;br /&gt;
&lt;br /&gt;
I&#039;d like to propose changing the nginx config to an adaption of the config suggested by the nextcloud documentation: https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html&lt;br /&gt;
&lt;br /&gt;
My minimal adaption is here: https://gist.github.com/rgeber/1b40a05310cabab551c9ef87b504af8e&lt;br /&gt;
&lt;br /&gt;
== What is the &amp;quot;Best method&amp;quot; to indicate in the wiki that there are different php version for different Nextcloud versions??? ==&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=ZNC&amp;diff=29384</id>
		<title>ZNC</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=ZNC&amp;diff=29384"/>
		<updated>2025-03-20T13:39:06Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: Fixed package name typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.znc.in/ZNC ZNC] is an advanced IRC bouncer that can establish such a permanent connection to several IRC networks and channels so your IRC client (or multiple clients) can disconnect/reconnect without losing the chat session, while appearing as a single user to other users.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Install the package that contains ZNC.&lt;br /&gt;
    {{Cmd|apk add znc}}&lt;br /&gt;
Create a ZNC configuration file, this command will automatically create znc.conf in {{path|/var/lib/znc/configs/}}. You will be asked to enter some information.&lt;br /&gt;
    {{Cmd|rc-service znc setup}}&lt;br /&gt;
    {{Note|Make sure the information you enter is as it&#039;s shown below.}}&lt;br /&gt;
    Listen on port: 1025&lt;br /&gt;
    Listen using SSL: yes&lt;br /&gt;
    Listen using both IPv4 and IPv6: no&lt;br /&gt;
    Username: your_username&lt;br /&gt;
    Enter password: your_password&lt;br /&gt;
    Confirm password: your_password&lt;br /&gt;
    Nick: nick&lt;br /&gt;
    Alternate nick: nick_&lt;br /&gt;
    Real name: optional&lt;br /&gt;
    Bind host: try to leave empty&lt;br /&gt;
    Set up a network? no&lt;br /&gt;
    Launch ZNC now? no&lt;br /&gt;
    {{Warning|Never edit the configuration file while ZNC is running; always check with &amp;lt;code&amp;gt;htop&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;rc-status&amp;lt;/code&amp;gt; if ZNC is running.}}&lt;br /&gt;
Start ZNC as service.&lt;br /&gt;
    {{Cmd|rc-service znc start}}&lt;br /&gt;
&lt;br /&gt;
== Run ZNC in a subdomain using NGINX ==&lt;br /&gt;
&lt;br /&gt;
=== Configure the ZNC webadmin page ===&lt;br /&gt;
&lt;br /&gt;
Open the ZNC webadmin page &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://YOUR_SERVER_IP:1025&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; in your browser. Accept the insecure certificate and go forward.&lt;br /&gt;
Log in with your username and password and go to global settings.&lt;br /&gt;
We want to maintain the webadmin connections separate from the IRC connections.&lt;br /&gt;
Let&#039;s make a listening port for the IRC connections.&lt;br /&gt;
&lt;br /&gt;
In Listen Port(s) add:&lt;br /&gt;
&lt;br /&gt;
    Port: 6697&lt;br /&gt;
    BindHost: *&lt;br /&gt;
    SSL: on&lt;br /&gt;
    IPv4: on&lt;br /&gt;
    IPv6: off&lt;br /&gt;
    IRC: on&lt;br /&gt;
    HTTP: off&lt;br /&gt;
    URIPrefix: /&lt;br /&gt;
Save the information you entered and stop the service for now.&lt;br /&gt;
    {{Cmd|rc-service znc stop}}&lt;br /&gt;
Edit the configuration file.&lt;br /&gt;
    {{Cmd|vim /var/lib/znc/configs/znc.conf}}&lt;br /&gt;
&lt;br /&gt;
{{Note|Listener0 is the webadmin port (it&#039;s listening port 1025). Listener1 is the IRC port (it&#039;s listening port 6697).}}&lt;br /&gt;
Your configuration file should look like this:&lt;br /&gt;
&lt;br /&gt;
{{Cat|/lib/znc/configs/znc.conf|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;Listener listener0&amp;gt;&lt;br /&gt;
    Allow IRC = false&lt;br /&gt;
    AllowWeb = true&lt;br /&gt;
    IPv4 = true&lt;br /&gt;
    IPv6 = false&lt;br /&gt;
    Port = 1025&lt;br /&gt;
    SSL = false&lt;br /&gt;
    URIPrefix = /&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Listener listener1&amp;gt;&lt;br /&gt;
    AllowIRC = true&lt;br /&gt;
    AllowWeb = false&lt;br /&gt;
    IPv4 = true&lt;br /&gt;
    IPv6 = false&lt;br /&gt;
    Port = 6697&lt;br /&gt;
    SSL = true&lt;br /&gt;
    URIPrefix = /&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Start ZNC as service.&lt;br /&gt;
    {{Cmd|rc-service znc start}}&lt;br /&gt;
&lt;br /&gt;
=== Configure NGINX ===&lt;br /&gt;
Install NGINX if you haven&#039;t already.&lt;br /&gt;
    {{Cmd|apk add nginx}}&lt;br /&gt;
Create a configuration file in conf.d separated from the main configuration files.  &lt;br /&gt;
    {{Cmd|vim /etc/nginx/conf.d/znc.your_domain.com.conf}}&lt;br /&gt;
The file should look something like below.&lt;br /&gt;
{{Cat|/etc/nginx/conf.d/znc.your_domain.com.conf|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
    server {&lt;br /&gt;
        server_name znc.yourdomain.com;&lt;br /&gt;
        location / {&lt;br /&gt;
            proxy_pass http://localhost:1025;&lt;br /&gt;
            }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
Restart the NGINX service.&lt;br /&gt;
    {{Cmd|rc-service nginx restart}}&lt;br /&gt;
&lt;br /&gt;
=== Set up SSL certificates ===&lt;br /&gt;
{{Note|We opt to use SSL certificates made by Let&#039;s Encrypt, instead of using the znc.pem certificate that comes with the program.}}&lt;br /&gt;
Install Certbot and its module to work with NGINX.&lt;br /&gt;
    {{Cmd|apk add certbot certbot-nginx}}&lt;br /&gt;
Run Certbot, this program will create Let&#039;s Encrypt SSL certificates for free. You will have to manually or automatically renew them every month.&lt;br /&gt;
    {{Cmd|certbot}}&lt;br /&gt;
Restart NGINX and you&#039;re done. Your webadmin page will be automatically running the SSL certificate made by Let&#039;s Encrypt.&lt;br /&gt;
    {{Cmd|rc-service nginx restart}}&lt;br /&gt;
Now we will replace the znc.pem certificate with the Let&#039;s Encrypt certificates for any person who wants to connect to our IRC bouncer. For this we need to concatenate two important files into znc.pem&lt;br /&gt;
    {{Cmd|cat /etc/letsencrypt/live/your_domain.com/privkey.pem /etc/letsencrypt/live/your_domain.com/fullchain.pem &amp;gt; /var/lib/znc/znc.pem}}&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Ddclient&amp;diff=27623</id>
		<title>Ddclient</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Ddclient&amp;diff=27623"/>
		<updated>2024-10-23T16:17:44Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: Added a &amp;quot;See Also&amp;quot; section with relevant links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
== How to download and install the latest version of ddclient ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/ddclient/ddclient DDclient] is a perl script to update accounts for Dynamic DNS Service Provider.&lt;br /&gt;
&lt;br /&gt;
== Install ==&lt;br /&gt;
&lt;br /&gt;
ddclient is available in community repository as of Alpine Linux 3.19.&lt;br /&gt;
&lt;br /&gt;
In order to use it, you need to first install it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# apk update&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# apk add ddclient&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
A sample configuration file is installed by default as &amp;lt;code&amp;gt;/etc/ddclient/ddclient.conf&amp;lt;/code&amp;gt;, so you can modify it according to your needs.&lt;br /&gt;
&lt;br /&gt;
Then, start ddclient as usual:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# rc-service ddclient start&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want/need, configure the service to start automatically on boot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# rc-update add ddclient default&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [https://ddclient.net/ Ddclient Homepage]&lt;br /&gt;
* [https://github.com/ddclient/ddclient Ddclient Github repo]&lt;br /&gt;
&lt;br /&gt;
[[Category:Networking]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Ddclient&amp;diff=27622</id>
		<title>Ddclient</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Ddclient&amp;diff=27622"/>
		<updated>2024-10-23T16:00:13Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: changed sample conf to what is included within the package&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
== How to download and install the latest version of ddclient ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/ddclient/ddclient DDclient] is a perl script to update accounts for Dynamic DNS Service Provider.&lt;br /&gt;
&lt;br /&gt;
== Install ==&lt;br /&gt;
&lt;br /&gt;
ddclient is available in community repository as of Alpine Linux 3.19.&lt;br /&gt;
&lt;br /&gt;
In order to use it, you need to first install it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# apk update&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# apk add ddclient&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
A sample configuration file is installed by default as &amp;lt;code&amp;gt;/etc/ddclient/ddclient.conf&amp;lt;/code&amp;gt;, so you can modify it according to your needs.&lt;br /&gt;
&lt;br /&gt;
Then, start ddclient as usual:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# rc-service ddclient start&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want/need, configure the service to start automatically on boot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# rc-update add ddclient default&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Networking]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Ddclient&amp;diff=27621</id>
		<title>Ddclient</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Ddclient&amp;diff=27621"/>
		<updated>2024-10-23T15:57:31Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: update that ddclient has been avail in community repo since Alpine 3.19&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
== How to download and install the latest version of ddclient ==&lt;br /&gt;
&lt;br /&gt;
[https://github.com/ddclient/ddclient DDclient] is a perl script to update accounts for Dynamic DNS Service Provider.&lt;br /&gt;
&lt;br /&gt;
== Install ==&lt;br /&gt;
&lt;br /&gt;
ddclient is available in community repository as of Alpine Linux 3.19.&lt;br /&gt;
&lt;br /&gt;
In order to use it, you need to first install it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# apk update&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# apk add ddclient&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
A sample configuration file is installed by default in &amp;lt;code&amp;gt;/etc/ddclient/ddclient.conf.sample.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rename it as &amp;lt;code&amp;gt;/etc/ddclient/ddclient.conf&amp;lt;/code&amp;gt; and modify it according to your needs.&lt;br /&gt;
&lt;br /&gt;
Then, start ddclient as usual:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# rc-service ddclient start&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want/need, configure the service to start automatically on boot:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;# rc-update add ddclient default&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Networking]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=HAProxy&amp;diff=27348</id>
		<title>HAProxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=HAProxy&amp;diff=27348"/>
		<updated>2024-09-18T15:50:18Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: Added HAProxy Installation section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://www.haproxy.org/ HAProxy] is a free, very fast, and reliable reverse-proxy offering high availability, load balancing, and proxying for TCP and HTTP-based applications.&lt;br /&gt;
&lt;br /&gt;
A unique feature is that HAProxy can be configured for SSL termination to occur locally on the HAProxy server or it can be configured to pass through SSL termination at the backend via SNI.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
HAProxy package is available in the Alpine Linux repositories. To install it run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk update&lt;br /&gt;
apk add haproxy}}&lt;br /&gt;
&lt;br /&gt;
=== System scripts ===&lt;br /&gt;
If you are running OpenRC, then you can install with:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk update&lt;br /&gt;
apk add haproxy-openrc}}&lt;br /&gt;
&lt;br /&gt;
If you are running runit, s6, or dinit, (or other), then there are no scripts packaged for your init systems yet. Please feel free to contribute a package with them.&lt;br /&gt;
&lt;br /&gt;
=== Local Documentation ===&lt;br /&gt;
If you want local documenation, then you can install that with:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk add haproxy-doc}}&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.haproxy.org/ HAProxy Homepage]&lt;br /&gt;
&lt;br /&gt;
[[Category:Web Server]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Matrix&amp;diff=27347</id>
		<title>Matrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Matrix&amp;diff=27347"/>
		<updated>2024-09-18T15:48:02Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: minor grammar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://matrix.org/ Matrix] is an ambitious new ecosystem and protocol for open federated instant messaging and VoIP. It consists of servers, [https://matrix.org/clients/ various clients] and [https://matrix.org/bridges/ bridge] software to connect to existing messaging solutions such as IRC (Internet Relay Chat).&lt;br /&gt;
&lt;br /&gt;
The [[Alpine Linux:IRC|Alpine Linux IRC chatrooms]] are bridged to Matrix. The General Alpine Linux room can be found on Matrix here [https://matrix.to/#/#_oftc_#alpine-linux:matrix.org #_oftc_#alpine-linux:matrix.org]. If you want to access any of the other Alpine Linux chats from Matrix, then substitute the IRC channel name accordingly.&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
The Matrix Protocol has multiple server implementations which are available on Alpine Linux.&lt;br /&gt;
&lt;br /&gt;
The reference server implementation Synapse, which is the most commonly used server, is available as the {{pkg|synapse}} package. It has been available since Alpine 3.11.&lt;br /&gt;
&lt;br /&gt;
There is also a second-generation Matrix homeserver written in Go, which is available as the {{pkg|dendrite}} package. It intends to provide an efficient, reliable and scalable alternative to Synapse, but it is not as feature complete as Synapse is at this time. It has been available since Alpine 3.15.&lt;br /&gt;
&lt;br /&gt;
There is also another Matrix homeserver, written in Rust, which is available as the {{pkg|conduit}} package and is only currently available in the Alpine Edge at this time.&lt;br /&gt;
&lt;br /&gt;
Before you start installing anything, make sure you have the latest packages available.&lt;br /&gt;
{{tip|Detailed information is found in [[Include:Upgrading_to_latest_release|this]] doc.}}&lt;br /&gt;
&lt;br /&gt;
= Matrix Synapse server =&lt;br /&gt;
&lt;br /&gt;
This Wiki will cover the installation, configuration, and setup of the &#039;&#039;&#039;Matrix Synapse server&#039;&#039;&#039;, as this is the most commonly used and feature complete Matrix Protocol server at this time.&lt;br /&gt;
&lt;br /&gt;
== Install Matrix Synapse server ==&lt;br /&gt;
&lt;br /&gt;
Synapse package is available in the Alpine Linux repositories. To install it run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk update&lt;br /&gt;
apk add synapse}}&lt;br /&gt;
&lt;br /&gt;
When installing the Alpine Linux synapse package, it will create a user called &#039;&#039;synapse&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Configuration and Setup ==&lt;br /&gt;
&lt;br /&gt;
During installation, the Alpine Linux synapse package will create a default synapse configuration file which will be located at {{path|/etc/synapse/homeserver.conf}}.&lt;br /&gt;
&lt;br /&gt;
You will want to refer to the [https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html Matrix Synapse Configuration Manual] to configure the various options.&lt;br /&gt;
&lt;br /&gt;
=== Reverse Proxy ===&lt;br /&gt;
&lt;br /&gt;
If you want your Matrix Synapse server to be accessed over the internet, then it is highly recommended to configure a [https://element-hq.github.io/synapse/latest/reverse_proxy.html reverse proxy] to do that. One advantage of doing this is that you can expose the default HTTPS port (443) to Matrix clients [https://github.com/element-hq/synapse?tab=readme-ov-file#using-a-reverse-proxy-with-synapse without needing to run Synapse with root privileges].&lt;br /&gt;
&lt;br /&gt;
The Matrix developers have provided [https://element-hq.github.io/synapse/latest/reverse_proxy.html#reverse-proxy-configuration-examples very good documentation with reverse proxy examples]. I prefer [[Nginx]], as I am most familiar with it, but you can also choose [[Apache]], [[Caddy]], or [[HAProxy]] to have in front of Synapse.&lt;br /&gt;
&lt;br /&gt;
=== Database ===&lt;br /&gt;
&lt;br /&gt;
Once synapse is installed, you will need to select which database to use with it. By default, Synapse uses a SQLite database, which is only acceptable for testing purposes &amp;amp; should not be used in a production environment.&lt;br /&gt;
&lt;br /&gt;
The Matrix Synapse developers recommend using PostgresSQL as your database backend. For more details on installing PostgresSQL, refer to the [[Postgresql|PostgreSQL article]]. It is recommended that you install the latest PostgreSQL release available, which at this time is PostgreSQL 16.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://wiki.archlinux.org/title/Matrix Matrix - Archwiki]&lt;br /&gt;
* [https://element-hq.github.io/synapse/ Matrix Synapse Documentation]&lt;br /&gt;
* [https://github.com/element-hq/synapse Matrix Synapse Github]&lt;br /&gt;
* [https://github.com/matrix-org/dendrite Matrix Dendrite Github]&lt;br /&gt;
* [https://conduit.rs/ Matrix Conduit Website]&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=HAProxy&amp;diff=27346</id>
		<title>HAProxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=HAProxy&amp;diff=27346"/>
		<updated>2024-09-18T15:33:21Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: Added Category:Web Server footer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://www.haproxy.org/ HAProxy] is a free, very fast, and reliable reverse-proxy offering high availability, load balancing, and proxying for TCP and HTTP-based applications.&lt;br /&gt;
&lt;br /&gt;
A unique feature is that HAProxy can be configured for SSL termination to occur locally on the HAProxy server or it can be configured to pass through SSL termination at the backend via SNI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.haproxy.org/ HAProxy Homepage]&lt;br /&gt;
&lt;br /&gt;
[[Category:Web Server]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Caddy&amp;diff=27345</id>
		<title>Caddy</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Caddy&amp;diff=27345"/>
		<updated>2024-09-18T15:32:16Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: Added Controlling Caddy section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://caddyserver.com/ Caddy] is a fast and extensible multi-platform HTTP/1, HTTP/2, and HTTP/3 web server with automatic TLS by default, providing HTTPS on every site.&lt;br /&gt;
&lt;br /&gt;
== Intallation ==&lt;br /&gt;
Caddy package is available in the Alpine Linux repositories. To install it run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk update&lt;br /&gt;
apk add caddy}}&lt;br /&gt;
&lt;br /&gt;
=== System scripts ===&lt;br /&gt;
&lt;br /&gt;
If you are running OpenRC, then you can install those with:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk update&lt;br /&gt;
apk add caddy-openrc}}&lt;br /&gt;
&lt;br /&gt;
If you are running runit, s6, or dinit, (or other), then there are no scripts packaged for your init systems yet. Please feel free to contribute a package with them.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
Caddy&#039;s default config file when using the Artix package is /etc/caddy/Caddyfile. &lt;br /&gt;
&lt;br /&gt;
Upstream provides [https://caddyserver.com/docs/caddyfile Caddyfile configuration documentation].&lt;br /&gt;
&lt;br /&gt;
Here is a simple Caddyfile hosting the site at localhost:2020:&lt;br /&gt;
{{Cmd|{&lt;br /&gt;
  http_port 2020&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
localhost:2020&lt;br /&gt;
file_server}}&lt;br /&gt;
&lt;br /&gt;
== Controlling Caddy ==&lt;br /&gt;
=== Start Caddy ===&lt;br /&gt;
After the installation Caddy is not running. To start Caddy, use start.&lt;br /&gt;
{{Cmd|rc-service caddy start}}&lt;br /&gt;
&lt;br /&gt;
Navigate a browser to the machine&#039;s address and a page should appear if you have configured /etc/caddy/Caddyfile correctly.&lt;br /&gt;
&lt;br /&gt;
Enable Caddy on startup (if needed):&lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-update add caddy}}&lt;br /&gt;
&lt;br /&gt;
Edit the configuration in {{Path|/etc/caddy/Caddyfile}} and run &lt;br /&gt;
&lt;br /&gt;
{{Cmd|# rc-service caddy restart}}&lt;br /&gt;
&lt;br /&gt;
to enable your changes&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [https://caddyserver.com/ Caddy Homepage]&lt;br /&gt;
&lt;br /&gt;
[[Category:Web Server]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=HAProxy&amp;diff=27342</id>
		<title>HAProxy</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=HAProxy&amp;diff=27342"/>
		<updated>2024-09-18T02:47:41Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: Initial HAProxy wiki placeholder&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://www.haproxy.org/ HAProxy] is a free, very fast, and reliable reverse-proxy offering high availability, load balancing, and proxying for TCP and HTTP-based applications.&lt;br /&gt;
&lt;br /&gt;
A unique feature is that HAProxy can be configured for SSL termination to occur locally on the HAProxy server or it can be configured to pass through SSL termination at the backend via SNI.&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Matrix&amp;diff=27341</id>
		<title>Matrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Matrix&amp;diff=27341"/>
		<updated>2024-09-18T02:43:51Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: removed relayd as reverse proxy as package does not exist on Alpine&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://matrix.org/ Matrix] is an ambitious new ecosystem and protocol for open federated instant messaging and VoIP. It consists of servers, [https://matrix.org/clients/ various clients] and [https://matrix.org/bridges/ bridge] software to connect to existing messaging solutions such as IRC (Internet Relay Chat).&lt;br /&gt;
&lt;br /&gt;
The [[Alpine Linux:IRC|Alpine Linux IRC chatrooms]] are bridged to Matrix. The General Alpine Linux room can be found on Matrix here [https://matrix.to/#/#_oftc_#alpine-linux:matrix.org #_oftc_#alpine-linux:matrix.org]. If you want to access any of the other Alpine Linux chats from Matrix, then substitute the IRC channel name accordingly.&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
The Matrix Protocol has multiple server implementations which are available on Alpine Linux.&lt;br /&gt;
&lt;br /&gt;
The reference server implementation Synapse, which is the most commonly used server, is available as the {{pkg|synapse}} package. It has been available since Alpine 3.11.&lt;br /&gt;
&lt;br /&gt;
There is also a second-generation Matrix homeserver written in Go, which is available as the {{pkg|dendrite}} package. It intends to provide an efficient, reliable and scalable alternative to Synapse, but it is not as feature complete as Synapse is at this time. It has been available since Alpine 3.15.&lt;br /&gt;
&lt;br /&gt;
There is also another Matrix homeserver, written in Rust, which is available as the {{pkg|conduit}} package and is only currently available in the Alpine Edge at this time.&lt;br /&gt;
&lt;br /&gt;
Before you start installing anything, make sure you have the latest packages available.&lt;br /&gt;
{{tip|Detailed information is found in [[Include:Upgrading_to_latest_release|this]] doc.}}&lt;br /&gt;
&lt;br /&gt;
= Matrix Synapse server =&lt;br /&gt;
&lt;br /&gt;
This Wiki will cover the installation, configuration, and setup of the &#039;&#039;&#039;Matrix Synapse server&#039;&#039;&#039;, as this is the most commonly used and feature complete Matrix Protocol server at this time.&lt;br /&gt;
&lt;br /&gt;
== Install Matrix Synapse server ==&lt;br /&gt;
&lt;br /&gt;
Synapse package is available in the Alpine Linux repositories. To install it run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk update&lt;br /&gt;
apk add synapse}}&lt;br /&gt;
&lt;br /&gt;
When installing the Alpine Linux synapse package, it will create a user called &#039;&#039;synapse&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Configuration and Setup ==&lt;br /&gt;
&lt;br /&gt;
During installation, the Alpine Linux synapse package will create a default synapse configuration file which will be located at {{path|/etc/synapse/homeserver.conf}}.&lt;br /&gt;
&lt;br /&gt;
You will want to refer to the [https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html Matrix Synapse Configuration Manual] to configure the various options.&lt;br /&gt;
&lt;br /&gt;
=== Reverse Proxy ===&lt;br /&gt;
&lt;br /&gt;
If you want your Matrix Synapse server to be accessed over the internet, then it is highly recommended to configure a [https://element-hq.github.io/synapse/latest/reverse_proxy.html reverse proxy] to do that. One advantage of doing this is that you can expose the default HTTPS port (443) to Matrix clients [https://github.com/element-hq/synapse?tab=readme-ov-file#using-a-reverse-proxy-with-synapse without needing to run Synapse with root privileges].&lt;br /&gt;
&lt;br /&gt;
The Matrix developers have provided [https://element-hq.github.io/synapse/latest/reverse_proxy.html#reverse-proxy-configuration-examples very good documentation with reverse proxy examples]. I prefer [[nginx]], as I am most familiar with it, but you can also choose [[Apache]], [[Caddy]], or [[HAProxy]] to have in front of Synapse.&lt;br /&gt;
&lt;br /&gt;
=== Database ===&lt;br /&gt;
&lt;br /&gt;
Once synapse is installed, you will need to select which database to use with it. By default, Synapse uses a SQLite database, which is only acceptable for testing purposes &amp;amp; should not be used in a production environment.&lt;br /&gt;
&lt;br /&gt;
The Matrix Synapse developers recommend using PostgresSQL as your database backend. For more details on installing PostgresSQL, refer to the [[Postgresql|PostgreSQL article]]. It is recommended that you install the latest PostgreSQL release available, which at this time is PostgreSQL 16.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://wiki.archlinux.org/title/Matrix Matrix - Archwiki]&lt;br /&gt;
* [https://element-hq.github.io/synapse/ Matrix Synapse Documentation]&lt;br /&gt;
* [https://github.com/element-hq/synapse Matrix Synapse Github]&lt;br /&gt;
* [https://github.com/matrix-org/dendrite Matrix Dendrite Github]&lt;br /&gt;
* [https://conduit.rs/ Matrix Conduit Website]&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Caddy&amp;diff=27340</id>
		<title>Caddy</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Caddy&amp;diff=27340"/>
		<updated>2024-09-18T02:41:48Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: Began the Caddy wiki article&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://caddyserver.com/ Caddy] is a fast and extensible multi-platform HTTP/1, HTTP/2, and HTTP/3 web server with automatic TLS by default, providing HTTPS on every site.&lt;br /&gt;
&lt;br /&gt;
== Intallation ==&lt;br /&gt;
Caddy package is available in the Alpine Linux repositories. To install it run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk update&lt;br /&gt;
apk add caddy}}&lt;br /&gt;
&lt;br /&gt;
=== System scripts ===&lt;br /&gt;
&lt;br /&gt;
If you are running OpenRC, then you can install those with:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk update&lt;br /&gt;
apk add caddy-openrc}}&lt;br /&gt;
&lt;br /&gt;
If you are running runit, s6, or dinit, (or other), then there are no scripts packaged for your init systems yet. Please feel free to contribute a package with them.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
Caddy&#039;s default config file when using the Artix package is /etc/caddy/Caddyfile. &lt;br /&gt;
&lt;br /&gt;
Upstream provides [https://caddyserver.com/docs/caddyfile Caddyfile configuration documentation].&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Matrix&amp;diff=27339</id>
		<title>Matrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Matrix&amp;diff=27339"/>
		<updated>2024-09-18T02:28:54Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: Provided more reverse proxy info from upstream&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://matrix.org/ Matrix] is an ambitious new ecosystem and protocol for open federated instant messaging and VoIP. It consists of servers, [https://matrix.org/clients/ various clients] and [https://matrix.org/bridges/ bridge] software to connect to existing messaging solutions such as IRC (Internet Relay Chat).&lt;br /&gt;
&lt;br /&gt;
The [[Alpine Linux:IRC|Alpine Linux IRC chatrooms]] are bridged to Matrix. The General Alpine Linux room can be found on Matrix here [https://matrix.to/#/#_oftc_#alpine-linux:matrix.org #_oftc_#alpine-linux:matrix.org]. If you want to access any of the other Alpine Linux chats from Matrix, then substitute the IRC channel name accordingly.&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
The Matrix Protocol has multiple server implementations which are available on Alpine Linux.&lt;br /&gt;
&lt;br /&gt;
The reference server implementation Synapse, which is the most commonly used server, is available as the {{pkg|synapse}} package. It has been available since Alpine 3.11.&lt;br /&gt;
&lt;br /&gt;
There is also a second-generation Matrix homeserver written in Go, which is available as the {{pkg|dendrite}} package. It intends to provide an efficient, reliable and scalable alternative to Synapse, but it is not as feature complete as Synapse is at this time. It has been available since Alpine 3.15.&lt;br /&gt;
&lt;br /&gt;
There is also another Matrix homeserver, written in Rust, which is available as the {{pkg|conduit}} package and is only currently available in the Alpine Edge at this time.&lt;br /&gt;
&lt;br /&gt;
Before you start installing anything, make sure you have the latest packages available.&lt;br /&gt;
{{tip|Detailed information is found in [[Include:Upgrading_to_latest_release|this]] doc.}}&lt;br /&gt;
&lt;br /&gt;
= Matrix Synapse server =&lt;br /&gt;
&lt;br /&gt;
This Wiki will cover the installation, configuration, and setup of the &#039;&#039;&#039;Matrix Synapse server&#039;&#039;&#039;, as this is the most commonly used and feature complete Matrix Protocol server at this time.&lt;br /&gt;
&lt;br /&gt;
== Install Matrix Synapse server ==&lt;br /&gt;
&lt;br /&gt;
Synapse package is available in the Alpine Linux repositories. To install it run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk update&lt;br /&gt;
apk add synapse}}&lt;br /&gt;
&lt;br /&gt;
When installing the Alpine Linux synapse package, it will create a user called &#039;&#039;synapse&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Configuration and Setup ==&lt;br /&gt;
&lt;br /&gt;
During installation, the Alpine Linux synapse package will create a default synapse configuration file which will be located at {{path|/etc/synapse/homeserver.conf}}.&lt;br /&gt;
&lt;br /&gt;
You will want to refer to the [https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html Matrix Synapse Configuration Manual] to configure the various options.&lt;br /&gt;
&lt;br /&gt;
=== Reverse Proxy ===&lt;br /&gt;
&lt;br /&gt;
If you want your Matrix Synapse server to be accessed over the internet, then it is highly recommended to configure a [https://element-hq.github.io/synapse/latest/reverse_proxy.html reverse proxy] to do that. One advantage of doing this is that you can expose the default HTTPS port (443) to Matrix clients [https://github.com/element-hq/synapse?tab=readme-ov-file#using-a-reverse-proxy-with-synapse without needing to run Synapse with root privileges].&lt;br /&gt;
&lt;br /&gt;
The Matrix developers have provided [https://element-hq.github.io/synapse/latest/reverse_proxy.html#reverse-proxy-configuration-examples very good documentation with reverse proxy examples]. I prefer [[nginx]], as I am most familiar with it, but you can also choose [[Apache]], [[Caddy]], [[HAProxy]] or [[relayd]] to have in front of Synapse.&lt;br /&gt;
&lt;br /&gt;
=== Database ===&lt;br /&gt;
&lt;br /&gt;
Once synapse is installed, you will need to select which database to use with it. By default, Synapse uses a SQLite database, which is only acceptable for testing purposes &amp;amp; should not be used in a production environment.&lt;br /&gt;
&lt;br /&gt;
The Matrix Synapse developers recommend using PostgresSQL as your database backend. For more details on installing PostgresSQL, refer to the [[Postgresql|PostgreSQL article]]. It is recommended that you install the latest PostgreSQL release available, which at this time is PostgreSQL 16.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://wiki.archlinux.org/title/Matrix Matrix - Archwiki]&lt;br /&gt;
* [https://element-hq.github.io/synapse/ Matrix Synapse Documentation]&lt;br /&gt;
* [https://github.com/element-hq/synapse Matrix Synapse Github]&lt;br /&gt;
* [https://github.com/matrix-org/dendrite Matrix Dendrite Github]&lt;br /&gt;
* [https://conduit.rs/ Matrix Conduit Website]&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Matrix&amp;diff=27338</id>
		<title>Matrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Matrix&amp;diff=27338"/>
		<updated>2024-09-18T02:19:41Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: Added upstream link to reverse proxy configuration examples&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://matrix.org/ Matrix] is an ambitious new ecosystem and protocol for open federated instant messaging and VoIP. It consists of servers, [https://matrix.org/clients/ various clients] and [https://matrix.org/bridges/ bridge] software to connect to existing messaging solutions such as IRC (Internet Relay Chat).&lt;br /&gt;
&lt;br /&gt;
The [[Alpine Linux:IRC|Alpine Linux IRC chatrooms]] are bridged to Matrix. The General Alpine Linux room can be found on Matrix here [https://matrix.to/#/#_oftc_#alpine-linux:matrix.org #_oftc_#alpine-linux:matrix.org]. If you want to access any of the other Alpine Linux chats from Matrix, then substitute the IRC channel name accordingly.&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
The Matrix Protocol has multiple server implementations which are available on Alpine Linux.&lt;br /&gt;
&lt;br /&gt;
The reference server implementation Synapse, which is the most commonly used server, is available as the {{pkg|synapse}} package. It has been available since Alpine 3.11.&lt;br /&gt;
&lt;br /&gt;
There is also a second-generation Matrix homeserver written in Go, which is available as the {{pkg|dendrite}} package. It intends to provide an efficient, reliable and scalable alternative to Synapse, but it is not as feature complete as Synapse is at this time. It has been available since Alpine 3.15.&lt;br /&gt;
&lt;br /&gt;
There is also another Matrix homeserver, written in Rust, which is available as the {{pkg|conduit}} package and is only currently available in the Alpine Edge at this time.&lt;br /&gt;
&lt;br /&gt;
Before you start installing anything, make sure you have the latest packages available.&lt;br /&gt;
{{tip|Detailed information is found in [[Include:Upgrading_to_latest_release|this]] doc.}}&lt;br /&gt;
&lt;br /&gt;
= Matrix Synapse server =&lt;br /&gt;
&lt;br /&gt;
This Wiki will cover the installation, configuration, and setup of the &#039;&#039;&#039;Matrix Synapse server&#039;&#039;&#039;, as this is the most commonly used and feature complete Matrix Protocol server at this time.&lt;br /&gt;
&lt;br /&gt;
== Install Matrix Synapse server ==&lt;br /&gt;
&lt;br /&gt;
Synapse package is available in the Alpine Linux repositories. To install it run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk update&lt;br /&gt;
apk add synapse}}&lt;br /&gt;
&lt;br /&gt;
When installing the Alpine Linux synapse package, it will create a user called &#039;&#039;synapse&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Configuration and Setup ==&lt;br /&gt;
&lt;br /&gt;
During installation, the Alpine Linux synapse package will create a default synapse configuration file which will be located at {{path|/etc/synapse/homeserver.conf}}.&lt;br /&gt;
&lt;br /&gt;
You will want to refer to the [https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html Matrix Synapse Configuration Manual] to configure the various options.&lt;br /&gt;
&lt;br /&gt;
If you want your Matrix Synapse server to be accessed over the internet, then it is highly recommended to configure a [https://element-hq.github.io/synapse/latest/reverse_proxy.html reverse proxy] to do that. You are free to choose your reverse proxy of choice, as [https://element-hq.github.io/synapse/latest/reverse_proxy.html#reverse-proxy-configuration-examples the Matrix Synapse documentation has examples] for each one. I prefer [[nginx]], as I am familiar with it. Please make the best reverse proxy choice of one that you are familiar with, or that you want to learn more about.&lt;br /&gt;
&lt;br /&gt;
=== Database ===&lt;br /&gt;
&lt;br /&gt;
Once synapse is installed, you will need to select which database to use with it. By default, Synapse uses a SQLite database, which is only acceptable for testing purposes &amp;amp; should not be used a production environment.&lt;br /&gt;
&lt;br /&gt;
The Matrix Synapse developers recommend using PostgresSQL as your database backend. For more details on installing PostgresSQL, refer to the [[Postgresql|PostgreSQL article]]. It is recommended that you install the latest PostgreSQL release available, which at this time is PostgreSQL 16.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://wiki.archlinux.org/title/Matrix Matrix - Archwiki]&lt;br /&gt;
* [https://element-hq.github.io/synapse/ Matrix Synapse Documentation]&lt;br /&gt;
* [https://github.com/element-hq/synapse Matrix Synapse Github]&lt;br /&gt;
* [https://github.com/matrix-org/dendrite Matrix Dendrite Github]&lt;br /&gt;
* [https://conduit.rs/ Matrix Conduit Website]&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Matrix&amp;diff=26946</id>
		<title>Matrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Matrix&amp;diff=26946"/>
		<updated>2024-07-23T02:48:17Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: fixed incorrectly formatted weblink&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://matrix.org/ Matrix] is an ambitious new ecosystem and protocol for open federated instant messaging and VoIP. It consists of servers, [https://matrix.org/clients/ various clients] and [https://matrix.org/bridges/ bridge] software to connect to existing messaging solutions such as IRC (Internet Relay Chat).&lt;br /&gt;
&lt;br /&gt;
The [[Alpine Linux:IRC|Alpine Linux IRC chatrooms]] are bridged to Matrix. The General Alpine Linux room can be found on Matrix here [https://matrix.to/#/#_oftc_#alpine-linux:matrix.org #_oftc_#alpine-linux:matrix.org]. If you want to access any of the other Alpine Linux chats from Matrix, then substitute the IRC channel name accordingly.&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
The Matrix Protocol has multiple server implementations which are available on Alpine Linux.&lt;br /&gt;
&lt;br /&gt;
The reference server implementation Synapse, which is the most commonly used server, is available as the {{pkg|synapse}} package. It has been available since Alpine 3.11.&lt;br /&gt;
&lt;br /&gt;
There is also a second-generation Matrix homeserver written in Go, which is available as the {{pkg|dendrite}} package. It intends to provide an efficient, reliable and scalable alternative to Synapse, but it is not as feature complete as Synapse is at this time. It has been available since Alpine 3.15.&lt;br /&gt;
&lt;br /&gt;
There is also another Matrix homeserver, written in Rust, which is available as the {{pkg|conduit}} package and is only currently available in the Alpine Edge at this time.&lt;br /&gt;
&lt;br /&gt;
Before you start installing anything, make sure you have the latest packages available.&lt;br /&gt;
{{tip|Detailed information is found in [[Include:Upgrading_to_latest_release|this]] doc.}}&lt;br /&gt;
&lt;br /&gt;
= Matrix Synapse server =&lt;br /&gt;
&lt;br /&gt;
This Wiki will cover the installation, configuration, and setup of the &#039;&#039;&#039;Matrix Synapse server&#039;&#039;&#039;, as this is the most commonly used and feature complete Matrix Protocol server at this time.&lt;br /&gt;
&lt;br /&gt;
== Install Matrix Synapse server ==&lt;br /&gt;
&lt;br /&gt;
Synapse package is available in the Alpine Linux repositories. To install it run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk update&lt;br /&gt;
apk add synapse}}&lt;br /&gt;
&lt;br /&gt;
When installing the Alpine Linux synapse package, it will create a user called &#039;&#039;synapse&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Configuration and Setup ==&lt;br /&gt;
&lt;br /&gt;
During installation, the Alpine Linux synapse package will create a default synapse configuration file which will be located at {{path|/etc/synapse/homeserver.conf}}.&lt;br /&gt;
&lt;br /&gt;
You will want to refer to the [https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html Matrix Synapse Configuration Manual] to configure the various options.&lt;br /&gt;
&lt;br /&gt;
If you want your Matrix Synapse server to be accessed over the internet, then it is highly recommended to configure a [https://element-hq.github.io/synapse/latest/reverse_proxy.html reverse proxy] to do that. You are free to choose your reverse proxy of choice, as the Matrix Synapse documentation has examples for each one. I recommend nginx, which you can read more about on the [https://wiki.alpinelinux.org/wiki/Nginx Nginx Alpine Wiki page].&lt;br /&gt;
&lt;br /&gt;
=== Database ===&lt;br /&gt;
&lt;br /&gt;
Once synapse is installed, you will need to select which database to use with it. By default, Synapse uses a SQLite database, which is only acceptable for testing purposes &amp;amp; should not be used a production environment.&lt;br /&gt;
&lt;br /&gt;
The Matrix Synapse developers recommend using PostgresSQL as your database backend. For more details on installing PostgresSQL, refer to the [https://wiki.alpinelinux.org/wiki/Postgresql PostgreSQL Alpine wiki page]. It is recommended that you install the latest PostgreSQL release available, which at this time is PostgreSQL 16.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://wiki.archlinux.org/title/Matrix Matrix - Archwiki]&lt;br /&gt;
* [https://element-hq.github.io/synapse/ Matrix Synapse Documentation]&lt;br /&gt;
* [https://github.com/element-hq/synapse Matrix Synapse Github]&lt;br /&gt;
* [https://github.com/matrix-org/dendrite Matrix Dendrite Github]&lt;br /&gt;
* [https://conduit.rs/ Matrix Conduit Website]&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Postgresql&amp;diff=26945</id>
		<title>Postgresql</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Postgresql&amp;diff=26945"/>
		<updated>2024-07-23T02:38:49Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: added guide for Upgrading PostgreSQL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= General =&lt;br /&gt;
&lt;br /&gt;
PostgreSQL is a well known opensource database that scales well and is easy to use.&lt;br /&gt;
&lt;br /&gt;
== PostgreSQL 16 ==&lt;br /&gt;
&lt;br /&gt;
To install, configure, and use PostgreSQL 16, which is the latest release, please refer to the [https://wiki.alpinelinux.org/wiki/Postgresql_16 PostgreSQL 16 Alpine Wiki page]. It will also create a system user called postgres.&lt;br /&gt;
&lt;br /&gt;
== PostgreSQL 15 ==&lt;br /&gt;
&lt;br /&gt;
To install PostgreSQL 15,&lt;br /&gt;
{{Cmd|apk add postgresql15 postgresql15-contrib postgresql15-openrc}}&lt;br /&gt;
{{Cmd|rc-update add postgresql}}&lt;br /&gt;
{{Cmd|rc-service postgresql start}}&lt;br /&gt;
&lt;br /&gt;
This will start the postgresql 15 server and perform some initial configuration. It will also create a system user called postgres.&lt;br /&gt;
&lt;br /&gt;
To configure and use PostgreSQL, please refer to the [https://wiki.alpinelinux.org/wiki/Postgresql_16 PostgreSQL 16 Alpine Wiki page] as the usage is the same.&lt;br /&gt;
&lt;br /&gt;
== PostgreSQL 14 ==&lt;br /&gt;
&lt;br /&gt;
To install PostgreSQL 14,&lt;br /&gt;
{{Cmd|apk add postgresql14 postgresql14-contrib postgresql14-openrc}}&lt;br /&gt;
{{Cmd|rc-update add postgresql}}&lt;br /&gt;
{{Cmd|rc-service postgresql start}}&lt;br /&gt;
&lt;br /&gt;
This will start the postgresql 14 server and perform some initial configuration. It will also create a system user called postgres.&lt;br /&gt;
&lt;br /&gt;
To configure and use PostgreSQL, please refer to the [https://wiki.alpinelinux.org/wiki/Postgresql_16 PostgreSQL 16 Alpine Wiki page] as the usage is the same.&lt;br /&gt;
&lt;br /&gt;
== Switching between PostgreSQL versions ==&lt;br /&gt;
&lt;br /&gt;
On Alpine Linux, you can use the command `pg_versions` to switch between PostgreSQL versions. This is very helpful when upgrading the version you are using.&lt;br /&gt;
&lt;br /&gt;
== Upgrading PostgreSQL ==&lt;br /&gt;
&lt;br /&gt;
Please follow along with [https://beune.dev/posts/upgrade-alpine-postgresql/ this guide] and substitute the version you are moving from and the version you are upgrading to.&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Postgresql&amp;diff=26944</id>
		<title>Postgresql</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Postgresql&amp;diff=26944"/>
		<updated>2024-07-23T01:20:36Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: added section: Switching between PostgreSQL versions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= General =&lt;br /&gt;
&lt;br /&gt;
PostgreSQL is a well known opensource database that scales well and is easy to use.&lt;br /&gt;
&lt;br /&gt;
== PostgreSQL 16 ==&lt;br /&gt;
&lt;br /&gt;
To install, configure, and use PostgreSQL 16, which is the latest release, please refer to the [https://wiki.alpinelinux.org/wiki/Postgresql_16 PostgreSQL 16 Alpine Wiki page]. It will also create a system user called postgres.&lt;br /&gt;
&lt;br /&gt;
== PostgreSQL 15 ==&lt;br /&gt;
&lt;br /&gt;
To install PostgreSQL 15,&lt;br /&gt;
{{Cmd|apk add postgresql15 postgresql15-contrib postgresql15-openrc}}&lt;br /&gt;
{{Cmd|rc-update add postgresql}}&lt;br /&gt;
{{Cmd|rc-service postgresql start}}&lt;br /&gt;
&lt;br /&gt;
This will start the postgresql 15 server and perform some initial configuration. It will also create a system user called postgres.&lt;br /&gt;
&lt;br /&gt;
To configure and use PostgreSQL, please refer to the [https://wiki.alpinelinux.org/wiki/Postgresql_16 PostgreSQL 16 Alpine Wiki page] as the usage is the same.&lt;br /&gt;
&lt;br /&gt;
== PostgreSQL 14 ==&lt;br /&gt;
&lt;br /&gt;
To install PostgreSQL 14,&lt;br /&gt;
{{Cmd|apk add postgresql14 postgresql14-contrib postgresql14-openrc}}&lt;br /&gt;
{{Cmd|rc-update add postgresql}}&lt;br /&gt;
{{Cmd|rc-service postgresql start}}&lt;br /&gt;
&lt;br /&gt;
This will start the postgresql 14 server and perform some initial configuration. It will also create a system user called postgres.&lt;br /&gt;
&lt;br /&gt;
To configure and use PostgreSQL, please refer to the [https://wiki.alpinelinux.org/wiki/Postgresql_16 PostgreSQL 16 Alpine Wiki page] as the usage is the same.&lt;br /&gt;
&lt;br /&gt;
== Switching between PostgreSQL versions ==&lt;br /&gt;
&lt;br /&gt;
On Alpine Linux, you can use the command `pg_versions` to switch between PostgreSQL versions. This is very helpful when upgrading the version you are using.&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Matrix&amp;diff=26942</id>
		<title>Matrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Matrix&amp;diff=26942"/>
		<updated>2024-07-22T02:16:08Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: minor edit to fix page link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://matrix.org/ Matrix] is an ambitious new ecosystem and protocol for open federated instant messaging and VoIP. It consists of servers, [https://matrix.org/clients/ various clients] and [https://matrix.org/bridges/ bridge] software to connect to existing messaging solutions such as IRC (Internet Relay Chat).&lt;br /&gt;
&lt;br /&gt;
The [[Alpine Linux:IRC|Alpine Linux IRC chatrooms]] are bridged to Matrix. The General Alpine Linux room can be found on Matrix here [https://matrix.to/#/#_oftc_#alpine-linux:matrix.org #_oftc_#alpine-linux:matrix.org]. If you want to access any of the other Alpine Linux chats from Matrix, then substitute the IRC channel name accordingly.&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
The Matrix Protocol has multiple server implementations which are available on Alpine Linux.&lt;br /&gt;
&lt;br /&gt;
The reference server implementation Synapse, which is the most commonly used server, is available as the {{pkg|synapse}} package. It has been available since Alpine 3.11.&lt;br /&gt;
&lt;br /&gt;
There is also a second-generation Matrix homeserver written in Go, which is available as the {{pkg|dendrite}} package. It intends to provide an efficient, reliable and scalable alternative to Synapse, but it is not as feature complete as Synapse is at this time. It has been available since Alpine 3.15.&lt;br /&gt;
&lt;br /&gt;
There is also another Matrix homeserver, written in Rust, which is available as the {{pkg|conduit}} package and is only currently available in the Alpine Edge at this time.&lt;br /&gt;
&lt;br /&gt;
Before you start installing anything, make sure you have the latest packages available.&lt;br /&gt;
{{tip|Detailed information is found in [[Include:Upgrading_to_latest_release|this]] doc.}}&lt;br /&gt;
&lt;br /&gt;
= Matrix Synapse server =&lt;br /&gt;
&lt;br /&gt;
This Wiki will cover the installation, configuration, and setup of the &#039;&#039;&#039;Matrix Synapse server&#039;&#039;&#039;, as this is the most commonly used and feature complete Matrix Protocol server at this time.&lt;br /&gt;
&lt;br /&gt;
== Install Matrix Synapse server ==&lt;br /&gt;
&lt;br /&gt;
Synapse package is available in the Alpine Linux repositories. To install it run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk update&lt;br /&gt;
apk add synapse}}&lt;br /&gt;
&lt;br /&gt;
When installing the Alpine Linux synapse package, it will create a user called &#039;&#039;synapse&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Configuration and Setup ==&lt;br /&gt;
&lt;br /&gt;
During installation, the Alpine Linux synapse package will create a default synapse configuration file which will be located at {{path|/etc/synapse/homeserver.conf}}.&lt;br /&gt;
&lt;br /&gt;
You will want to refer to the [https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html Matrix Synapse Configuration Manual] to configure the various options.&lt;br /&gt;
&lt;br /&gt;
If you want your Matrix Synapse server to be accessed over the internet, then it is highly recommended to configure a [https://element-hq.github.io/synapse/latest/reverse_proxy.html reverse proxy] to do that. You are free to choose your reverse proxy of choice, as the Matrix Synapse documentation has examples for each one. I recommend nginx, which you can read more about on the [https://wiki.alpinelinux.org/wiki/Nginx Nginx Alpine Wiki page].&lt;br /&gt;
&lt;br /&gt;
=== Database ===&lt;br /&gt;
&lt;br /&gt;
Once synapse is installed, you will need to select which database to use with it. By default, Synapse uses a SQLite database, which is only acceptable for testing purposes &amp;amp; should not be used a production environment.&lt;br /&gt;
&lt;br /&gt;
The Matrix Synapse developers recommend using PostgresSQL as your database backend. For more details on installing PostgresSQL, refer to the [PostgreSQL Alpine wiki page https://wiki.alpinelinux.org/wiki/Postgresql]. It is recommended that you install the latest release available of PostgreSQL, which at this time is PostgreSQL 16.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://wiki.archlinux.org/title/Matrix Matrix - Archwiki]&lt;br /&gt;
* [https://element-hq.github.io/synapse/ Matrix Synapse Documentation]&lt;br /&gt;
* [https://github.com/element-hq/synapse Matrix Synapse Github]&lt;br /&gt;
* [https://github.com/matrix-org/dendrite Matrix Dendrite Github]&lt;br /&gt;
* [https://conduit.rs/ Matrix Conduit Website]&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Talk:Postgresql_16&amp;diff=26941</id>
		<title>Talk:Postgresql 16</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Talk:Postgresql_16&amp;diff=26941"/>
		<updated>2024-07-22T01:54:09Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Matrix&amp;diff=26940</id>
		<title>Matrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Matrix&amp;diff=26940"/>
		<updated>2024-07-22T01:52:35Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: add databse backend section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://matrix.org/ Matrix] is an ambitious new ecosystem and protocol for open federated instant messaging and VoIP. It consists of servers, [https://matrix.org/clients/ various clients] and [https://matrix.org/bridges/ bridge] software to connect to existing messaging solutions such as IRC (Internet Relay Chat).&lt;br /&gt;
&lt;br /&gt;
The [[Alpine Linux:IRC|Alpine Linux IRC chatrooms]] are bridged to Matrix. The General Alpine Linux room can be found on Matrix here [https://matrix.to/#/#_oftc_#alpine-linux:matrix.org #_oftc_#alpine-linux:matrix.org]. If you want to access any of the other Alpine Linux chats from Matrix, then substitute the IRC channel name accordingly.&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
The Matrix Protocol has multiple server implementations which are available on Alpine Linux.&lt;br /&gt;
&lt;br /&gt;
The reference server implementation Synapse, which is the most commonly used server, is available as the {{pkg|synapse}} package. It has been available since Alpine 3.11.&lt;br /&gt;
&lt;br /&gt;
There is also a second-generation Matrix homeserver written in Go, which is available as the {{pkg|dendrite}} package. It intends to provide an efficient, reliable and scalable alternative to Synapse, but it is not as feature complete as Synapse is at this time. It has been available since Alpine 3.15.&lt;br /&gt;
&lt;br /&gt;
There is also another Matrix homeserver, written in Rust, which is available as the {{pkg|conduit}} package and is only currently available in the Alpine Edge at this time.&lt;br /&gt;
&lt;br /&gt;
Before you start installing anything, make sure you have the latest packages available.&lt;br /&gt;
{{tip|Detailed information is found in [[Include:Upgrading_to_latest_release|this]] doc.}}&lt;br /&gt;
&lt;br /&gt;
= Matrix Synapse server =&lt;br /&gt;
&lt;br /&gt;
This Wiki will cover the installation, configuration, and setup of the &#039;&#039;&#039;Matrix Synapse server&#039;&#039;&#039;, as this is the most commonly used and feature complete Matrix Protocol server at this time.&lt;br /&gt;
&lt;br /&gt;
== Install Matrix Synapse server ==&lt;br /&gt;
&lt;br /&gt;
Synapse package is available in the Alpine Linux repositories. To install it run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk update&lt;br /&gt;
apk add synapse}}&lt;br /&gt;
&lt;br /&gt;
When installing the Alpine Linux synapse package, it will create a user called &#039;&#039;synapse&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Configuration and Setup ==&lt;br /&gt;
&lt;br /&gt;
During installation, the Alpine Linux synapse package will create a default synapse configuration file which will be located at {{path|/etc/synapse/homeserver.conf}}.&lt;br /&gt;
&lt;br /&gt;
You will want to refer to the [https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html Matrix Synapse Configuration Manual] to configure the various options.&lt;br /&gt;
&lt;br /&gt;
If you want your Matrix Synapse server to be accessed over the internet, then it is highly recommended to configure a [https://element-hq.github.io/synapse/latest/reverse_proxy.html reverse proxy] to do that. You are free to choose your reverse proxy of choice, as the Matrix Synapse documentation has examples for each one. I recommend nginx, which you can read more about on the [https://wiki.alpinelinux.org/wiki/Nginx Nginx Alpine Wiki page].&lt;br /&gt;
&lt;br /&gt;
=== Database ===&lt;br /&gt;
&lt;br /&gt;
Once synapse is installed, you will need to select which database to use with it. By default, Synapse uses a SQLite database, which is only acceptable for testing purposes &amp;amp; should not be used a production environment.&lt;br /&gt;
&lt;br /&gt;
The Matrix Synapse developers recommend using PostgresSQL as your database backend. For more details on installing PostgresSQL, refer to the [PostgreSQL Alpine wiki pagehttps://wiki.alpinelinux.org/wiki/Postgresql]. It is recommended that you install the latest release available of PostgreSQL, which at this time is PostgreSQL 16.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://wiki.archlinux.org/title/Matrix Matrix - Archwiki]&lt;br /&gt;
* [https://element-hq.github.io/synapse/ Matrix Synapse Documentation]&lt;br /&gt;
* [https://github.com/element-hq/synapse Matrix Synapse Github]&lt;br /&gt;
* [https://github.com/matrix-org/dendrite Matrix Dendrite Github]&lt;br /&gt;
* [https://conduit.rs/ Matrix Conduit Website]&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Postgresql&amp;diff=26939</id>
		<title>Postgresql</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Postgresql&amp;diff=26939"/>
		<updated>2024-07-22T01:51:11Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: initial PostgreSQL wiki page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= General =&lt;br /&gt;
&lt;br /&gt;
PostgreSQL is a well known opensource database that scales well and is easy to use.&lt;br /&gt;
&lt;br /&gt;
== PostgreSQL 16 ==&lt;br /&gt;
&lt;br /&gt;
To install, configure, and use PostgreSQL 16, which is the latest release, please refer to the [https://wiki.alpinelinux.org/wiki/Postgresql_16 PostgreSQL 16 Alpine Wiki page]. It will also create a system user called postgres.&lt;br /&gt;
&lt;br /&gt;
== PostgreSQL 15 ==&lt;br /&gt;
&lt;br /&gt;
To install PostgreSQL 15,&lt;br /&gt;
{{Cmd|apk add postgresql15 postgresql15-contrib postgresql15-openrc}}&lt;br /&gt;
{{Cmd|rc-update add postgresql}}&lt;br /&gt;
{{Cmd|rc-service postgresql start}}&lt;br /&gt;
&lt;br /&gt;
This will start the postgresql 15 server and perform some initial configuration. It will also create a system user called postgres.&lt;br /&gt;
&lt;br /&gt;
To configure and use PostgreSQL, please refer to the [https://wiki.alpinelinux.org/wiki/Postgresql_16 PostgreSQL 16 Alpine Wiki page] as the usage is the same.&lt;br /&gt;
&lt;br /&gt;
== PostgreSQL 14 ==&lt;br /&gt;
&lt;br /&gt;
To install PostgreSQL 14,&lt;br /&gt;
{{Cmd|apk add postgresql14 postgresql14-contrib postgresql14-openrc}}&lt;br /&gt;
{{Cmd|rc-update add postgresql}}&lt;br /&gt;
{{Cmd|rc-service postgresql start}}&lt;br /&gt;
&lt;br /&gt;
This will start the postgresql 14 server and perform some initial configuration. It will also create a system user called postgres.&lt;br /&gt;
&lt;br /&gt;
To configure and use PostgreSQL, please refer to the [https://wiki.alpinelinux.org/wiki/Postgresql_16 PostgreSQL 16 Alpine Wiki page] as the usage is the same.&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Matrix&amp;diff=26938</id>
		<title>Matrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Matrix&amp;diff=26938"/>
		<updated>2024-07-22T01:14:42Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: add info about synapse config and reverse proxy examples&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://matrix.org/ Matrix] is an ambitious new ecosystem and protocol for open federated instant messaging and VoIP. It consists of servers, [https://matrix.org/clients/ various clients] and [https://matrix.org/bridges/ bridge] software to connect to existing messaging solutions such as IRC (Internet Relay Chat).&lt;br /&gt;
&lt;br /&gt;
The [[Alpine Linux:IRC|Alpine Linux IRC chatrooms]] are bridged to Matrix. The General Alpine Linux room can be found on Matrix here [https://matrix.to/#/#_oftc_#alpine-linux:matrix.org #_oftc_#alpine-linux:matrix.org]. If you want to access any of the other Alpine Linux chats from Matrix, then substitute the IRC channel name accordingly.&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
The Matrix Protocol has multiple server implementations which are available on Alpine Linux.&lt;br /&gt;
&lt;br /&gt;
The reference server implementation Synapse, which is the most commonly used server, is available as the {{pkg|synapse}} package. It has been available since Alpine 3.11.&lt;br /&gt;
&lt;br /&gt;
There is also a second-generation Matrix homeserver written in Go, which is available as the {{pkg|dendrite}} package. It intends to provide an efficient, reliable and scalable alternative to Synapse, but it is not as feature complete as Synapse is at this time. It has been available since Alpine 3.15.&lt;br /&gt;
&lt;br /&gt;
There is also another Matrix homeserver, written in Rust, which is available as the {{pkg|conduit}} package and is only currently available in the Alpine Edge at this time.&lt;br /&gt;
&lt;br /&gt;
Before you start installing anything, make sure you have the latest packages available.&lt;br /&gt;
{{tip|Detailed information is found in [[Include:Upgrading_to_latest_release|this]] doc.}}&lt;br /&gt;
&lt;br /&gt;
= Matrix Synapse server =&lt;br /&gt;
&lt;br /&gt;
This Wiki will cover the installation, configuration, and setup of the &#039;&#039;&#039;Matrix Synapse server&#039;&#039;&#039;, as this is the most commonly used and feature complete Matrix Protocol server at this time.&lt;br /&gt;
&lt;br /&gt;
== Install Matrix Synapse server ==&lt;br /&gt;
&lt;br /&gt;
Synapse package is available in the Alpine Linux repositories. To install it run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk update&lt;br /&gt;
apk add synapse}}&lt;br /&gt;
&lt;br /&gt;
When installing the Alpine Linux synapse package, it will create a user called &#039;&#039;synapse&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Configuration and Setup ==&lt;br /&gt;
&lt;br /&gt;
During installation, the Alpine Linux synapse package will create a default synapse configuration file which will be located at {{path|/etc/synapse/homeserver.conf}}.&lt;br /&gt;
&lt;br /&gt;
You will want to refer to the [https://element-hq.github.io/synapse/latest/usage/configuration/config_documentation.html Matrix Synapse Configuration Manual] to configure the various options.&lt;br /&gt;
&lt;br /&gt;
If you want your Matrix Synapse server to be accessed over the internet, then it is highly recommended to configure a [https://element-hq.github.io/synapse/latest/reverse_proxy.html reverse proxy] to do that. You are free to choose your reverse proxy of choice, as the Matrix Synapse documentation has examples for each one. I recommend nginx, which you can read more about on the [https://wiki.alpinelinux.org/wiki/Nginx Nginx Alpine Wiki page].&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://wiki.archlinux.org/title/Matrix Matrix - Archwiki]&lt;br /&gt;
* [https://element-hq.github.io/synapse/ Matrix Synapse Documentation]&lt;br /&gt;
* [https://github.com/element-hq/synapse Matrix Synapse Github]&lt;br /&gt;
* [https://github.com/matrix-org/dendrite Matrix Dendrite Github]&lt;br /&gt;
* [https://conduit.rs/ Matrix Conduit Website]&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=User_talk:Jahway603&amp;diff=26934</id>
		<title>User talk:Jahway603</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=User_talk:Jahway603&amp;diff=26934"/>
		<updated>2024-07-19T15:04:45Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: first talk page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Unsure of what to place here other that I&#039;ve been really enjoying using and contributing to Alpine Linux&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Matrix&amp;diff=26933</id>
		<title>Matrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Matrix&amp;diff=26933"/>
		<updated>2024-07-19T15:03:30Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: Added synapse install documentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://matrix.org/ Matrix] is an ambitious new ecosystem and protocol for open federated instant messaging and VoIP. It consists of servers, [https://matrix.org/clients/ various clients] and [https://matrix.org/bridges/ bridge] software to connect to existing messaging solutions such as IRC (Internet Relay Chat).&lt;br /&gt;
&lt;br /&gt;
The [[Alpine Linux:IRC|Alpine Linux IRC chatrooms]] are bridged to Matrix. The General Alpine Linux room can be found on Matrix here [https://matrix.to/#/#_oftc_#alpine-linux:matrix.org #_oftc_#alpine-linux:matrix.org]. If you want to access any of the other Alpine Linux chats from Matrix, then substitute the IRC channel name accordingly.&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
The Matrix Protocol has multiple server implementations which are available on Alpine Linux.&lt;br /&gt;
&lt;br /&gt;
The reference server implementation Synapse, which is the most commonly used server, is available as the {{pkg|synapse}} package. It has been available since Alpine 3.11.&lt;br /&gt;
&lt;br /&gt;
There is also a second-generation Matrix homeserver written in Go, which is available as the {{pkg|dendrite}} package. It intends to provide an efficient, reliable and scalable alternative to Synapse, but it is not as feature complete as Synapse is at this time. It has been available since Alpine 3.15.&lt;br /&gt;
&lt;br /&gt;
There is also another Matrix homeserver, written in Rust, which is available as the {{pkg|conduit}} package and is only currently available in the Alpine Edge at this time.&lt;br /&gt;
&lt;br /&gt;
Before you start installing anything, make sure you have the latest packages available.&lt;br /&gt;
{{tip|Detailed information is found in [[Include:Upgrading_to_latest_release|this]] doc.}}&lt;br /&gt;
&lt;br /&gt;
= Matrix Synapse server =&lt;br /&gt;
&lt;br /&gt;
This Wiki will cover the installation, configuration, and setup of the &#039;&#039;&#039;Matrix Synapse server&#039;&#039;&#039;, as this is the most commonly used and feature complete Matrix Protocol server at this time.&lt;br /&gt;
&lt;br /&gt;
== Install Matrix Synapse server ==&lt;br /&gt;
&lt;br /&gt;
Synapse package is available in the Alpine Linux repositories. To install it run:&lt;br /&gt;
&lt;br /&gt;
{{Cmd|apk update&lt;br /&gt;
apk add synapse}}&lt;br /&gt;
&lt;br /&gt;
When installing the Alpine Linux synapse package, it will create a user called &#039;&#039;synapse&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Configuration and Setup ==&lt;br /&gt;
&lt;br /&gt;
During installation, the Alpine Linux synapse package will create a default synapse configuration file which will be located at {{path|/etc/synapse/homeserver.conf}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://wiki.archlinux.org/title/Matrix Matrix - Archwiki]&lt;br /&gt;
* [https://element-hq.github.io/synapse/ Matrix Synapse Documentation]&lt;br /&gt;
* [https://github.com/element-hq/synapse Matrix Synapse Github]&lt;br /&gt;
* [https://github.com/matrix-org/dendrite Matrix Dendrite Github]&lt;br /&gt;
* [https://conduit.rs/ Matrix Conduit Website]&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Talk:Postgresql_16&amp;diff=26875</id>
		<title>Talk:Postgresql 16</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Talk:Postgresql_16&amp;diff=26875"/>
		<updated>2024-07-01T01:26:15Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: question about postgresql versions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Should this page be replicated for other Postgresql versions or should this page contain instructions, or at least mention, regarding installing different versions available? 01:26, 1 July 2024 (UTC)&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Matrix&amp;diff=26873</id>
		<title>Matrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Matrix&amp;diff=26873"/>
		<updated>2024-06-30T15:23:46Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: minor grammar change&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://matrix.org/ Matrix] is an ambitious new ecosystem and protocol for open federated instant messaging and VoIP. It consists of servers, [https://matrix.org/clients/ various clients] and [https://matrix.org/bridges/ bridge] software to connect to existing messaging solutions like [https://wiki.alpinelinux.org/wiki/Alpine_Linux:IRC Internet Relay Chat, known as IRC].&lt;br /&gt;
&lt;br /&gt;
The [https://wiki.alpinelinux.org/wiki/Alpine_Linux:IRC Alpine Linux IRC chatrooms] are bridged to Matrix. The General Alpine Linux room can be found on Matrix here [https://matrix.to/#/#_oftc_#alpine-linux:matrix.org #_oftc_#alpine-linux:matrix.org]. If you want to access any of the other Alpine Linux chats from Matrix, then substitute the IRC channel name accordingly.&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
The Matrix Protocol has multiple server implementations which are available on Alpine Linux.&lt;br /&gt;
&lt;br /&gt;
The reference server implementation Synapse, which is the most commonly used server, is available as the {{pkg|synapse}} package. It has been available since Alpine 3.11.&lt;br /&gt;
&lt;br /&gt;
There is also a second-generation Matrix homeserver written in Go, which is available as the {{pkg|dendrite}} package. It intends to provide an efficient, reliable and scalable alternative to Synapse, but it is not as feature complete as Synapse is at this time. It has been available since Alpine 3.15.&lt;br /&gt;
&lt;br /&gt;
There is also another Matrix homeserver, written in Rust, which is available as the {{pkg|conduit}} package and is only currently available in the Alpine Edge at this time.&lt;br /&gt;
&lt;br /&gt;
Before you start installing anything, make sure you have the latest packages available.&lt;br /&gt;
{{tip|Detailed information is found in [[Include:Upgrading_to_latest_release|this]] doc.}}&lt;br /&gt;
&lt;br /&gt;
= Configuration and Setup =&lt;br /&gt;
&lt;br /&gt;
This Wiki will cover the configuration and setup of the Synapse server, as this is the most commonly used and feature complete Matrix Protocol server at this time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://wiki.archlinux.org/title/Matrix Matrix - Archwiki]&lt;br /&gt;
* [https://element-hq.github.io/synapse/ Matrix Synapse Documentation]&lt;br /&gt;
* [https://github.com/element-hq/synapse Matrix Synapse Github]&lt;br /&gt;
* [https://github.com/matrix-org/dendrite Matrix Dendrite Github]&lt;br /&gt;
* [https://conduit.rs/ Matrix Conduit Website]&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Matrix&amp;diff=26872</id>
		<title>Matrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Matrix&amp;diff=26872"/>
		<updated>2024-06-30T15:22:25Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: fixed IRC link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://matrix.org/ Matrix] is an ambitious new ecosystem and protocol for open federated instant messaging and VoIP. It consists of servers, [https://matrix.org/clients/ various clients] and [https://matrix.org/bridges/ bridge] software to connect to existing messaging solutions like [https://wiki.alpinelinux.org/wiki/Alpine_Linux:IRC Internet Relay Chat|IRC].&lt;br /&gt;
&lt;br /&gt;
The [https://wiki.alpinelinux.org/wiki/Alpine_Linux:IRC Alpine Linux IRC chatrooms] are bridged to Matrix. The General Alpine Linux room can be found on Matrix here [https://matrix.to/#/#_oftc_#alpine-linux:matrix.org #_oftc_#alpine-linux:matrix.org]. If you want to access any of the other Alpine Linux chats from Matrix, then substitute the IRC channel name accordingly.&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
The Matrix Protocol has multiple server implementations which are available on Alpine Linux.&lt;br /&gt;
&lt;br /&gt;
The reference server implementation Synapse, which is the most commonly used server, is available as the {{pkg|synapse}} package. It has been available since Alpine 3.11.&lt;br /&gt;
&lt;br /&gt;
There is also a second-generation Matrix homeserver written in Go, which is available as the {{pkg|dendrite}} package. It intends to provide an efficient, reliable and scalable alternative to Synapse, but it is not as feature complete as Synapse is at this time. It has been available since Alpine 3.15.&lt;br /&gt;
&lt;br /&gt;
There is also another Matrix homeserver, written in Rust, which is available as the {{pkg|conduit}} package and is only currently available in the Alpine Edge at this time.&lt;br /&gt;
&lt;br /&gt;
Before you start installing anything, make sure you have the latest packages available.&lt;br /&gt;
{{tip|Detailed information is found in [[Include:Upgrading_to_latest_release|this]] doc.}}&lt;br /&gt;
&lt;br /&gt;
= Configuration and Setup =&lt;br /&gt;
&lt;br /&gt;
This Wiki will cover the configuration and setup of the Synapse server, as this is the most commonly used and feature complete Matrix Protocol server at this time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://wiki.archlinux.org/title/Matrix Matrix - Archwiki]&lt;br /&gt;
* [https://element-hq.github.io/synapse/ Matrix Synapse Documentation]&lt;br /&gt;
* [https://github.com/element-hq/synapse Matrix Synapse Github]&lt;br /&gt;
* [https://github.com/matrix-org/dendrite Matrix Dendrite Github]&lt;br /&gt;
* [https://conduit.rs/ Matrix Conduit Website]&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Matrix&amp;diff=26871</id>
		<title>Matrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Matrix&amp;diff=26871"/>
		<updated>2024-06-30T15:14:19Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: heading change&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://matrix.org/ Matrix] is an ambitious new ecosystem and protocol for open federated instant messaging and VoIP. It consists of servers, [https://matrix.org/clients/ various clients] and [https://matrix.org/bridges/ bridge] software to connect to existing messaging solutions like [[wikipedia:Internet Relay Chat|IRC]].&lt;br /&gt;
&lt;br /&gt;
The [https://wiki.alpinelinux.org/wiki/Alpine_Linux:IRC Alpine Linux IRC chatrooms] are bridged to Matrix. The General Alpine Linux room can be found on Matrix here [https://matrix.to/#/#_oftc_#alpine-linux:matrix.org #_oftc_#alpine-linux:matrix.org]. If you want to access any of the other Alpine Linux chats from Matrix, then substitute the IRC channel name accordingly.&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
The Matrix Protocol has multiple server implementations which are available on Alpine Linux.&lt;br /&gt;
&lt;br /&gt;
The reference server implementation Synapse, which is the most commonly used server, is available as the {{pkg|synapse}} package. It has been available since Alpine 3.11.&lt;br /&gt;
&lt;br /&gt;
There is also a second-generation Matrix homeserver written in Go, which is available as the {{pkg|dendrite}} package. It intends to provide an efficient, reliable and scalable alternative to Synapse, but it is not as feature complete as Synapse is at this time. It has been available since Alpine 3.15.&lt;br /&gt;
&lt;br /&gt;
There is also another Matrix homeserver, written in Rust, which is available as the {{pkg|conduit}} package and is only currently available in the Alpine Edge at this time.&lt;br /&gt;
&lt;br /&gt;
Before you start installing anything, make sure you have the latest packages available.&lt;br /&gt;
{{tip|Detailed information is found in [[Include:Upgrading_to_latest_release|this]] doc.}}&lt;br /&gt;
&lt;br /&gt;
= Configuration and Setup =&lt;br /&gt;
&lt;br /&gt;
This Wiki will cover the configuration and setup of the Synapse server, as this is the most commonly used and feature complete Matrix Protocol server at this time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://wiki.archlinux.org/title/Matrix Matrix - Archwiki]&lt;br /&gt;
* [https://element-hq.github.io/synapse/ Matrix Synapse Documentation]&lt;br /&gt;
* [https://github.com/element-hq/synapse Matrix Synapse Github]&lt;br /&gt;
* [https://github.com/matrix-org/dendrite Matrix Dendrite Github]&lt;br /&gt;
* [https://conduit.rs/ Matrix Conduit Website]&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Matrix&amp;diff=26870</id>
		<title>Matrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Matrix&amp;diff=26870"/>
		<updated>2024-06-30T15:13:57Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: created&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://matrix.org/ Matrix] is an ambitious new ecosystem and protocol for open federated instant messaging and VoIP. It consists of servers, [https://matrix.org/clients/ various clients] and [https://matrix.org/bridges/ bridge] software to connect to existing messaging solutions like [[wikipedia:Internet Relay Chat|IRC]].&lt;br /&gt;
&lt;br /&gt;
The [https://wiki.alpinelinux.org/wiki/Alpine_Linux:IRC Alpine Linux IRC chatrooms] are bridged to Matrix. The General Alpine Linux room can be found on Matrix here [https://matrix.to/#/#_oftc_#alpine-linux:matrix.org #_oftc_#alpine-linux:matrix.org]. If you want to access any of the other Alpine Linux chats from Matrix, then substitute the IRC channel name accordingly.&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
The Matrix Protocol has multiple server implementations which are available on Alpine Linux.&lt;br /&gt;
&lt;br /&gt;
The reference server implementation Synapse, which is the most commonly used server, is available as the {{pkg|synapse}} package. It has been available since Alpine 3.11.&lt;br /&gt;
&lt;br /&gt;
There is also a second-generation Matrix homeserver written in Go, which is available as the {{pkg|dendrite}} package. It intends to provide an efficient, reliable and scalable alternative to Synapse, but it is not as feature complete as Synapse is at this time. It has been available since Alpine 3.15.&lt;br /&gt;
&lt;br /&gt;
There is also another Matrix homeserver, written in Rust, which is available as the {{pkg|conduit}} package and is only currently available in the Alpine Edge at this time.&lt;br /&gt;
&lt;br /&gt;
Before you start installing anything, make sure you have the latest packages available.&lt;br /&gt;
{{tip|Detailed information is found in [[Include:Upgrading_to_latest_release|this]] doc.}}&lt;br /&gt;
&lt;br /&gt;
= Configuration and Setup&lt;br /&gt;
&lt;br /&gt;
This Wiki will cover the configuration and setup of the Synapse server, as this is the most commonly used and feature complete Matrix Protocol server at this time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://wiki.archlinux.org/title/Matrix Matrix - Archwiki]&lt;br /&gt;
* [https://element-hq.github.io/synapse/ Matrix Synapse Documentation]&lt;br /&gt;
* [https://github.com/element-hq/synapse Matrix Synapse Github]&lt;br /&gt;
* [https://github.com/matrix-org/dendrite Matrix Dendrite Github]&lt;br /&gt;
* [https://conduit.rs/ Matrix Conduit Website]&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Nextcloud&amp;diff=26801</id>
		<title>Nextcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Nextcloud&amp;diff=26801"/>
		<updated>2024-05-29T18:59:53Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: Installing nextcloud-initscript APK will install the correct php8x-fpm APK&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://nextcloud.com/ Nextcloud] is WedDAV-based solution for storing and sharing on-line your data, files, images, video, music, calendars and contacts. [https://karlitschek.de/2016/06/nextcloud/ Nextcloud is a fork of ownCloud with enterprise features included].&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
{{pkg|nextcloud}} is available from Alpine 3.5 and greater.&lt;br /&gt;
&lt;br /&gt;
Before you start installing anything, make sure you have the latest packages available. Make sure you are using an &#039;http&#039; repository in your {{path|/etc/apk/repositories}} file, then:&lt;br /&gt;
{{cmd|apk update}}&lt;br /&gt;
{{tip|Detailed information is found in [[Include:Upgrading_to_latest_release|this]] doc.}}&lt;br /&gt;
&lt;br /&gt;
== Database ==&lt;br /&gt;
First you have to decide which database to use. Use one of the databases listed below.&lt;br /&gt;
&lt;br /&gt;
=== Sqlite ===&lt;br /&gt;
All you need to do is to install the package:&lt;br /&gt;
{{cmd|apk add nextcloud-sqlite}}&lt;br /&gt;
&lt;br /&gt;
=== PostgreSQL ===&lt;br /&gt;
Install the package:&lt;br /&gt;
{{cmd|apk add nextcloud-pgsql postgresql postgresql-client}}&lt;br /&gt;
&lt;br /&gt;
Next thing is to configure and start the database:&lt;br /&gt;
{{cmd|rc-service postgresql setup&lt;br /&gt;
rc-service postgresql start}}&lt;br /&gt;
&lt;br /&gt;
Next, you need to create a user and temporarily grant the CREATEDB privilege:&lt;br /&gt;
{{cmd|psql -U postgres&lt;br /&gt;
CREATE USER mycloud WITH PASSWORD &#039;test123&#039;;&lt;br /&gt;
ALTER ROLE mycloud CREATEDB;&lt;br /&gt;
\q}}&lt;br /&gt;
{{Note|Replace the above username &#039;mycloud&#039; and password &#039;test123&#039; with something secure. Remember these settings. You will need them later when setting up nextcloud.}}&lt;br /&gt;
&lt;br /&gt;
Set postgresql to start on boot/:&lt;br /&gt;
{{cmd|rc-update add postgresql}}&lt;br /&gt;
&lt;br /&gt;
=== MariaDB ===&lt;br /&gt;
Install the package:&lt;br /&gt;
{{cmd|apk add nextcloud-mysql mariadb mariadb-client}}&lt;br /&gt;
&lt;br /&gt;
Now configure and start {{pkg|mariadb}}:&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;mysql_install_db --user=mysql --datadir=/var/lib/mysql&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
service mariadb start&lt;br /&gt;
rc-update add mariadb&lt;br /&gt;
mysql_secure_installation}}&lt;br /&gt;
Follow the wizard to setup passwords, etc.&lt;br /&gt;
{{Note|Remember the usernames/passwords that you set using the wizard. You will need them later.}}&lt;br /&gt;
&lt;br /&gt;
Next, you need to create a user and database and set permissions:&lt;br /&gt;
{{cmd|mysql -u root -p&lt;br /&gt;
CREATE DATABASE nextcloud;&lt;br /&gt;
GRANT ALL ON nextcloud.* TO &#039;mycloud&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;test123&#039;;&lt;br /&gt;
GRANT ALL ON nextcloud.* TO &#039;mycloud&#039;@&#039;localhost.localdomain&#039; IDENTIFIED BY &#039;test123&#039;;&lt;br /&gt;
FLUSH PRIVILEGES;&lt;br /&gt;
EXIT}}&lt;br /&gt;
{{Note|Replace the above username &#039;mycloud&#039; and password &#039;test123&#039; with something secure. Remember these settings. You will need them later when setting up nextcloud.}}&lt;br /&gt;
&lt;br /&gt;
{{pkg|mariadb-client}} is not needed anymore. Let&#039;s uninstall it:&lt;br /&gt;
{{cmd|apk del mariadb-client}}&lt;br /&gt;
&lt;br /&gt;
== Webserver ==&lt;br /&gt;
Next thing is to choose, install, and configure a webserver. In this example we will install {{pkg|nginx}} or {{pkg|lighttpd}}. You are free to install any other webserver of your choice as long as it supports PHP and FastCGI. Generating an SSL certificate for your webserver is outside of the scope of this document.&lt;br /&gt;
&lt;br /&gt;
{{pkg|nextcloud-initscript}} facilitates running the webserver with php-fpm.&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add nextcloud-initscript}}&lt;br /&gt;
&lt;br /&gt;
=== Nginx ===&lt;br /&gt;
Install the needed packages:&lt;br /&gt;
{{cmd|apk add nginx}}&lt;br /&gt;
&lt;br /&gt;
Delete the default nginx website configuration:&lt;br /&gt;
{{cmd|rm /etc/nginx/http.d/default.conf}}&lt;br /&gt;
&lt;br /&gt;
Create a configuration file for your site in {{path|/etc/nginx/http.d/mysite.mydomain.com.conf}}:&lt;br /&gt;
{{Cat|/etc/nginx/http.d/mysite.mydomain.com.conf|server {&lt;br /&gt;
        #listen       [::]:80; #uncomment for IPv6 support&lt;br /&gt;
        listen       80;&lt;br /&gt;
	return 301 https://$host$request_uri;&lt;br /&gt;
	server_name mysite.mydomain.com;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
server {&lt;br /&gt;
        #listen       [::]:443 ssl; #uncomment for IPv6 support&lt;br /&gt;
        listen       443 ssl;&lt;br /&gt;
        server_name  mysite.mydomain.com;&lt;br /&gt;
&lt;br /&gt;
	root /usr/share/webapps/nextcloud;&lt;br /&gt;
        index  index.php index.html index.htm;&lt;br /&gt;
	disable_symlinks off;&lt;br /&gt;
&lt;br /&gt;
        ssl_certificate      /etc/ssl/cert.pem;&lt;br /&gt;
        ssl_certificate_key  /etc/ssl/key.pem;&lt;br /&gt;
        ssl_session_timeout  5m;&lt;br /&gt;
&lt;br /&gt;
        #Enable Perfect Forward Secrecy and ciphers without known vulnerabilities&lt;br /&gt;
        #Beware! It breaks compatibility with older OS and browsers (e.g. Windows XP, Android 2.x, etc.)&lt;br /&gt;
	#ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA;&lt;br /&gt;
        #ssl_prefer_server_ciphers  on;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        location / {&lt;br /&gt;
            try_files $uri $uri/ /index.html;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000&lt;br /&gt;
        location ~ [^/]\.php(/&amp;amp;#124;$) {&lt;br /&gt;
                fastcgi_split_path_info ^(.+?\.php)(/.*)$;&lt;br /&gt;
                if (!-f $document_root$fastcgi_script_name) {&lt;br /&gt;
                        return 404;&lt;br /&gt;
                }&lt;br /&gt;
                #fastcgi_pass 127.0.0.1:9000;&lt;br /&gt;
		#fastcgi_pass unix:/run/php-fpm/socket;&lt;br /&gt;
		fastcgi_pass unix:/run/nextcloud/fastcgi.sock; # From the nextcloud-initscript package&lt;br /&gt;
                fastcgi_index index.php;&lt;br /&gt;
                include fastcgi.conf;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
        # Help pass nextcloud&#039;s configuration checks after install:&lt;br /&gt;
        # Per https://docs.nextcloud.com/server/22/admin_manual/issues/general_troubleshooting.html#service-discovery&lt;br /&gt;
        location ^~ /.well-known/carddav { return 301 /remote.php/dav/; }&lt;br /&gt;
        location ^~ /.well-known/caldav { return 301 /remote.php/dav/; }&lt;br /&gt;
        location ^~ /.well-known/webfinger { return 301 /index.php/.well-known/webfinger; }&lt;br /&gt;
        location ^~ /.well-known/nodeinfo { return 301 /index.php/.well-known/nodeinfo; }&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
If you plan to enable uploads - and you probably do) - then you need to modify the default:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
client_max_body_size 1m;&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
setting in {{path|/etc/nginx/nginx.conf}}. For testing purposes, I disabled the limit by changing it to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
client_max_body_size 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This enabled large file uploads and auto-uploads to work. Note, this is a file-size restriction in addition to the restriction set in {{path|/etc/php81/php-fpm.d/nextcloud.conf}}. That second restriction defaults to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
; Maximal size of a file that can be uploaded via web interface.&lt;br /&gt;
php_admin_value[memory_limit] = 512M&lt;br /&gt;
php_admin_value[post_max_size] = 513M&lt;br /&gt;
php_admin_value[upload_max_filesize] = 513M&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another setting that may limit file-size is in configuration file {{path|/etc/php81/php.ini}}, where I set the restriction to to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
upload_max_filesize = 513M&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to match the {{path|/etc/php81/php-fpm.d/nextcloud.conf}} file-size restriction.&lt;br /&gt;
&lt;br /&gt;
If you are running from RAM and you&#039;re dealing with large files you might need to move the FastCGI temp file from {{path|/tmp}} to {{path|/var/tmp}} or to a directory that is mounted on hdd:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastcgi_temp_path /var/tmp/nginx/fastcgi 1 2;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Large file uploads take some time to be processed by php-fpm, so you need to bump the Nginx default read timeout:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fastcgi_read_timeout 300s;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|If you are serving several users make sure to tune the *&#039;&#039;pm.max_children&#039;&#039; setting in {{path|/etc/php81/php-fpm.d/nextcloud.conf}}}}&lt;br /&gt;
&lt;br /&gt;
{{path|/etc/nginx/nginx.conf}} should already be configured to load your site config from this directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
# Includes virtual hosts configs.&lt;br /&gt;
include /etc/nginx/http.d/*;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Start services:&lt;br /&gt;
{{cmd|service nginx start&lt;br /&gt;
service nextcloud start}}&lt;br /&gt;
&lt;br /&gt;
Enable automatic startup of services:&lt;br /&gt;
{{cmd|rc-update add nginx&lt;br /&gt;
rc-update add nextcloud}}&lt;br /&gt;
&lt;br /&gt;
=== Lighttpd ===&lt;br /&gt;
Install the package:&lt;br /&gt;
{{cmd|apk add lighttpd php5-cgi}}&lt;br /&gt;
&lt;br /&gt;
Make sure you have FastCGI enabled in {{pkg|lighttpd}}:&lt;br /&gt;
{{cat|/etc/lighttpd/lighttpd.conf|...&lt;br /&gt;
include &amp;quot;mod_fastcgi.conf&amp;quot;&lt;br /&gt;
...}}&lt;br /&gt;
&lt;br /&gt;
Start up the webserver:&lt;br /&gt;
{{cmd|rc-service lighttpd start}}&lt;br /&gt;
&lt;br /&gt;
{{tip|You might want to follow the [[Lighttpd_Advanced_security#Https_access|Lighttpd_Https_access]] doc in order to configure lighttpd to use https &#039;&#039;(securing your connections to your nextcloud server)&#039;&#039;.}}&lt;br /&gt;
&lt;br /&gt;
Link {{pkg|nextcloud}} installation to web server directory:&lt;br /&gt;
{{cmd|ln -s /usr/share/webapps/nextcloud /var/www/localhost/htdocs}}&lt;br /&gt;
&lt;br /&gt;
== Firewall ==&lt;br /&gt;
Next up, open the desired port for the webserver in the firewall. You can use the following snippet as a reference for an nftable rule in a new file{{path|/etc/nftables.d/50-https.nft}}:&lt;br /&gt;
{{Cat|/etc/nftables.d/50-https.nft|&lt;br /&gt;
#!/usr/sbin/nft -f&lt;br /&gt;
&lt;br /&gt;
table inet filter {&lt;br /&gt;
	chain input {&lt;br /&gt;
		# allow https&lt;br /&gt;
		tcp dport 443 accept comment &amp;quot;accept HTTPS&amp;quot;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Other settings ==&lt;br /&gt;
=== Hardening ===&lt;br /&gt;
Consider updating the variable &amp;lt;code&amp;gt;url.access-deny&amp;lt;/code&amp;gt; in {{path|/etc/lighttpd/lighttpd.conf}} for additional security. Add &amp;lt;code&amp;gt;&amp;quot;config.php&amp;quot;&amp;lt;/code&amp;gt; to the variable &#039;&#039;(that&#039;s where the database is stored)&#039;&#039; so it looks something like this:&lt;br /&gt;
{{cat|/etc/lighttpd/lighttpd.conf|...&lt;br /&gt;
url.access-deny {{=}} (&amp;quot;~&amp;quot;, &amp;quot;.inc&amp;quot;, &amp;quot;config.php&amp;quot;)&lt;br /&gt;
...}}&lt;br /&gt;
Restart {{pkg|lighttpd}} to activate the changes:&lt;br /&gt;
{{cmd|rc-service lighttpd restart}}&lt;br /&gt;
&lt;br /&gt;
=== Additional packages ===&lt;br /&gt;
Some large apps, such as pdfviewer, texteditor, notifications and videoplayer are in separate packages:&lt;br /&gt;
{{cmd|apk add nextcloud-files_pdfviewer nextcloud-text nextcloud-notifications nextcloud-files_videoplayer nextcloud-files_external}}&lt;br /&gt;
You can also install the {{pkg|nextcloud-default-apps}} meta-package which installs all 30 core Nextcloud apps (listed as dependencies under aforementioned link):&lt;br /&gt;
{{cmd|apk add nextcloud-default-apps}}&lt;br /&gt;
&lt;br /&gt;
=== How To Create a Self-Signed SSL Certificate ===&lt;br /&gt;
Install openssl:&lt;br /&gt;
{{cmd|apk add openssl}}&lt;br /&gt;
Generate your self signed certificate and its private key:&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/ssl1.1/private/nextcloud-selfsigned.key -out /etc/ssl1.1/certs/nextcloud-selfsigned.crt&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Edit your nginx configuration:&lt;br /&gt;
{{cat|/etc/nginx/http.d/mysite.mydomain.com.conf|&lt;br /&gt;
ssl_certificate      /etc/ssl1.1/certs/nextcloud-selfsigned.crt;&lt;br /&gt;
ssl_certificate_key  /etc/ssl1.1/private/nextcloud-selfsigned.key;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== How To Install and Set Up Auto-Renewing LetsEncrypt SSL Certificate ===&lt;br /&gt;
After first setting up the Nextcloud server using the instructions in the &#039;Configure and use Nextcloud&#039; section below, I then followed the SSL-setup instructions at: [[https://techjogging.com/create-letsencrypt-certificate-alpine-nginx.html Tech Jogging]].&lt;br /&gt;
&lt;br /&gt;
I also had to add my Nextcloud servers Fully Qualified Domain Name (FQDN) to the list of trusted domains in /etc/nextcloud/config.php. In the section labelled: &#039;trusted_domains&#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&#039;trusted_domains&#039; =&amp;gt;&lt;br /&gt;
  array (&lt;br /&gt;
    0 =&amp;gt; &#039;&amp;lt;machine&#039;s local IP address&amp;gt;&#039;,&lt;br /&gt;
    1 =&amp;gt; &#039;nextcloud.mydomain.com&#039;,&lt;br /&gt;
  ),&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Configure and use Nextcloud =&lt;br /&gt;
&lt;br /&gt;
== Configure ==&lt;br /&gt;
Point your browser at &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;https://mysite.mydomain.com&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and follow the on-screen instructions to complete the installation, supplying the database user and password created before.&lt;br /&gt;
&lt;br /&gt;
== Hardening PostgreSQL ==&lt;br /&gt;
If you have chosen PGSQL backend, revoke CREATEDB privilege from &#039;mycloud&#039; user:&lt;br /&gt;
{{cmd|psql -U postgres&lt;br /&gt;
ALTER ROLE mycloud NOCREATEDB;&lt;br /&gt;
\q}}&lt;br /&gt;
&lt;br /&gt;
== Increase upload size ==&lt;br /&gt;
 {{path|/etc/php81/php-fpm.d/nextcloud.conf}} has overridden default file sizes, but they can be modified further to suit your needs:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
; Maximal size of a file that can be uploaded via web interface.&lt;br /&gt;
php_admin_value[memory_limit] = 512M&lt;br /&gt;
php_admin_value[post_max_size] = 513M&lt;br /&gt;
php_admin_value[upload_max_filesize] = 513M&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Enable opcache for nginx/php81 ==&lt;br /&gt;
To increase performace install&lt;br /&gt;
{{cmd|apk add php81-opcache}}&lt;br /&gt;
&lt;br /&gt;
Now uncomment/edit lines in /etc/php81/php.ini:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
opcache.enable=1&lt;br /&gt;
opcache.enable_cli=1&lt;br /&gt;
opcache.interned_strings_buffer=8&lt;br /&gt;
opcache.max_accelerated_files=10000&lt;br /&gt;
opcache.memory_consumption=128 //you can reduce this slightly when short on RAM&lt;br /&gt;
opcache.save_comments=1&lt;br /&gt;
opcache.revalidate_freq=1&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Restart php-fpm81&lt;br /&gt;
{{cmd|rc-service php-fpm81 restart}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Enable thumbnail for video ==&lt;br /&gt;
&lt;br /&gt;
To be able to generate thumbnails for videos, besides [https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/previews_configuration.html configuring] nextcloud, you will need to unlist &amp;lt;code&amp;gt;proc_open&amp;lt;/code&amp;gt; from php&#039;s disabled functions. PHP relies on that function to call ffmpeg to generate the thumbnails, without that it will fail to do so even if you have it enabled on config.php.&lt;br /&gt;
&lt;br /&gt;
Remove &amp;lt;code&amp;gt;proc_open&amp;lt;/code&amp;gt; from the disabled function in {{path|/etc/php81/php-fpm.d/nextcloud.conf}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
; Disable certain functions for security reasons.&lt;br /&gt;
; http://php.net/disable-functions&lt;br /&gt;
php_admin_value[disable_functions] = exec,passthru,shell_exec,system,curl_multi_exec,show_source&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now add &amp;lt;code&amp;gt;&#039;OC\\Preview\\Movie&#039;&amp;lt;/code&amp;gt; to the list of &amp;lt;code&amp;gt;&#039;enabledPreviewProviders&#039;&amp;lt;/code&amp;gt; and have ffmpeg installed:&lt;br /&gt;
{{cmd|apk add ffmpeg}}&lt;br /&gt;
&lt;br /&gt;
After restarting the fpm service it should start generating thumbnails for videos.&lt;br /&gt;
&lt;br /&gt;
== Clients ==&lt;br /&gt;
There are clients available for many platforms, Android included:&lt;br /&gt;
* https://nextcloud.org/sync-clients/{{dead link}} &#039;&#039;(nextcloud Sync clients)&#039;&#039;&lt;br /&gt;
* https://nextcloud.com/install/ &#039;&#039;(Android client)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{pkg|nextcloud-client}} is currently available in the community repo.&lt;br /&gt;
&lt;br /&gt;
= Video Communication =&lt;br /&gt;
One of the major features of Nextcloud 11, available on Alpine 3.6 (currently edge) is a [https://nextcloud.com/webrtc/ WebRTC app], which relies on Spreed WebRTC server, which is available in the Alpine testing repository. Everything is still beta, so be aware of it :-). If you want a private video conferencing server install Nextcloud using Nginx and do the following (you can use Apache as well and follow the &#039;&#039;Apache config&#039;&#039; instructions [https://nextcloud.com/webrtc/ nextcloud.com]):&lt;br /&gt;
&lt;br /&gt;
Put the following config in the &#039;&#039;server&#039;&#039; section of Nginx:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Spreed WebRTC&lt;br /&gt;
location ^~ /webrtc {&lt;br /&gt;
  proxy_pass http://127.0.0.1:8080;&lt;br /&gt;
  proxy_http_version 1.1;&lt;br /&gt;
  proxy_set_header Upgrade $http_upgrade;&lt;br /&gt;
  proxy_set_header Connection $connection_upgrade;&lt;br /&gt;
  proxy_set_header X-Forwarded-Proto $scheme;&lt;br /&gt;
  proxy_set_header Host $http_host;&lt;br /&gt;
  proxy_set_header X-Real-IP $remote_addr;&lt;br /&gt;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;&lt;br /&gt;
&lt;br /&gt;
  proxy_buffering             on;&lt;br /&gt;
  proxy_ignore_client_abort   off;&lt;br /&gt;
  proxy_redirect              off;&lt;br /&gt;
  proxy_connect_timeout       90;&lt;br /&gt;
  proxy_send_timeout          90;&lt;br /&gt;
  proxy_read_timeout          90;&lt;br /&gt;
  proxy_buffer_size           4k;&lt;br /&gt;
  proxy_buffers               4 32k;&lt;br /&gt;
  proxy_busy_buffers_size     64k;&lt;br /&gt;
  proxy_temp_file_write_size  64k;&lt;br /&gt;
  proxy_next_upstream         error timeout invalid_header http_502 http_503 http_504;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Put the following section in the &#039;&#039;http&#039;&#039; section of Nginx:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
map $http_upgrade $connection_upgrade {&lt;br /&gt;
  default upgrade;&lt;br /&gt;
  &#039;&#039;      close;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reload Nginx:&lt;br /&gt;
{{cmd|rc-service nginx reload}}&lt;br /&gt;
&lt;br /&gt;
Install Spreed WedRTC server (make sure you have the testing [https://wiki.alpinelinux.org/wiki/Alpine_Linux_package_management#Packages_and_Repositories repository] enabled):&lt;br /&gt;
{{cmd|apk add spreed-web-server}}&lt;br /&gt;
&lt;br /&gt;
Using the configuration file in &#039;&#039;/etc/spreed-webrtc/spreed-webrtc-server.conf&#039;&#039; follow the instructions at [https://nextcloud.com/webrtc/ nextcloud.com] to configure Spreed WebRTC server. Then start the server:&lt;br /&gt;
{{cmd|rc-service spreed-web-server start}}&lt;br /&gt;
{{cmd|rc-update add spreed-web-server}}&lt;br /&gt;
&lt;br /&gt;
Install the &#039;&#039;Spreed video calls&#039;&#039; app in Nextcloud and enjoy your private video calls.&lt;br /&gt;
&lt;br /&gt;
= Upgrading =&lt;br /&gt;
&lt;br /&gt;
If you&#039;re using alpine stable, rather than edge, be aware when an upgrade skips a major release version: Nextcloud doesn&#039;t support skipping a major release version in its upgrade path. For this reason, alpine also packages the previous nextcloud release as a separate package.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [https://wiki.archlinux.org/title/Nextcloud Nextcloud - Archwiki]&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Talk:Nginx&amp;diff=26729</id>
		<title>Talk:Nginx</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Talk:Nginx&amp;diff=26729"/>
		<updated>2024-05-15T14:36:44Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: question about www user&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Does this still require creating and using the user `www` when the default package installs a nginx user? [[User:Jahway603|Jahway603]] ([[User talk:Jahway603|talk]]) 14:36, 15 May 2024 (UTC)&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Talk:Nextcloud&amp;diff=25876</id>
		<title>Talk:Nextcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Talk:Nextcloud&amp;diff=25876"/>
		<updated>2023-12-15T14:29:26Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: Nextcloud Default Data Directory Info is missing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are a few missing steps that turn into warnings in the UI&lt;br /&gt;
&lt;br /&gt;
* enabling APCu or another cache&lt;br /&gt;
  (set in a apcu.ini AND config.php)&lt;br /&gt;
&lt;br /&gt;
Is there a reason why php5-fpm is recommended instead of php7-fpm?&lt;br /&gt;
Php5 isn&#039;t supported by many applications anymore and will soon become deprecated.&lt;br /&gt;
&lt;br /&gt;
== Descriptions for additional nextcloud packages is missing ==&lt;br /&gt;
&lt;br /&gt;
There is no list or descriptions for additional nextcloud packages on this wiki article. I just upgraded my Alpine install and would like determine which additional packages I should install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&amp;lt;span class=&amp;quot;autosigned&amp;quot;&amp;gt;—&amp;amp;nbsp;Preceding [[Help:Signature|unsigned]] comment added by [[User:Jahway603|Jahway603]] ([[User talk:Jahway603|{{int:talkpagelinktext}}]] • [[Special:Contributions/Jahway603|{{int:contribslink}}]]) 12:31, 19 April 2023‎&amp;lt;/span&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Default Data Directory Info is missing ==&lt;br /&gt;
&lt;br /&gt;
Unsure where in this wiki the Nextcloud default data directory of `/var/lib/nextcloud/data` should be entered.&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Talk:Nextcloud&amp;diff=23233</id>
		<title>Talk:Nextcloud</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Talk:Nextcloud&amp;diff=23233"/>
		<updated>2023-04-19T16:31:29Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: Descriptions for additional nextcloud packages is missing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are a few missing steps that turn into warnings in the UI&lt;br /&gt;
&lt;br /&gt;
* enabling APCu or another cache&lt;br /&gt;
  (set in a apcu.ini AND config.php)&lt;br /&gt;
&lt;br /&gt;
Is there a reason why php5-fpm is recommended instead of php7-fpm?&lt;br /&gt;
Php5 isn&#039;t supported by many applications anymore and will soon become deprecated.&lt;br /&gt;
&lt;br /&gt;
== Descriptions for additional nextcloud packages is missing ==&lt;br /&gt;
&lt;br /&gt;
There is no list or descriptions for additional nextcloud packages on this wiki article. I just upgraded my Alpine install and would like determine which additional packages I should install.&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=User:Jahway603&amp;diff=23231</id>
		<title>User:Jahway603</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=User:Jahway603&amp;diff=23231"/>
		<updated>2023-04-19T16:09:07Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: .&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;and then?&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Talk:Rsnapshot&amp;diff=23230</id>
		<title>Talk:Rsnapshot</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Talk:Rsnapshot&amp;diff=23230"/>
		<updated>2023-04-19T16:08:34Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: broken automation script removed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Rsnapshot&amp;diff=23211</id>
		<title>Rsnapshot</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Rsnapshot&amp;diff=23211"/>
		<updated>2023-04-18T22:52:40Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: Fixed rsnapshot cron scripts&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://rsnapshot.org/ &amp;lt;samp&amp;gt;rsnapshot&amp;lt;/samp&amp;gt;] is a filesystem backup utility based on [[rsync|&amp;lt;samp&amp;gt;rsync&amp;lt;/samp&amp;gt;]]. Using &amp;lt;samp&amp;gt;rsnapshot&amp;lt;/samp&amp;gt;, it is possible to take snapshots of your filesystems at different points in time. Using hard links, rsnapshot creates the illusion of multiple full backups, while only taking up the space of one full backup plus differences. When coupled with &amp;lt;samp&amp;gt;ssh&amp;lt;/samp&amp;gt;, it is possible to take snapshots of remote filesystems as well. This document is a tutorial on the installation and configuration of rsnapshot.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
To install rsnapshot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apk add rsnapshot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
To configure &amp;lt;samp&amp;gt;rsnapshot&amp;lt;/samp&amp;gt;, copy the example configuration &amp;lt;samp&amp;gt;/etc/rsnapshot.conf.default&amp;lt;/samp&amp;gt; to &amp;lt;samp&amp;gt;/etc/rsnapshot.conf&amp;lt;/samp&amp;gt;, and edit it to your needs based on the comments and the [http://rsnapshot.org/rsnapshot/docs/docbook/rest.html official documentation]. Note that &amp;lt;samp&amp;gt;rsnapshot&amp;lt;/samp&amp;gt; requires tabs between options and values in &amp;lt;samp&amp;gt;rsnapshot.conf&amp;lt;/samp&amp;gt;. This is done so spaces can be included in filenames without requiring any extra escaping or quoting.&lt;br /&gt;
&lt;br /&gt;
The most important parts to modify are where to store the backups:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snapshot_root	/mnt/backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
How many backups to retain:&lt;br /&gt;
&lt;br /&gt;
These settings used to be called &amp;quot;hourly, daily, weekly, monthly&amp;quot; in older releases of rsnapshot, but were changed to &amp;quot;alpha, beta, gamma, delta&amp;quot; because the time interval between backups is arbitrary.&lt;br /&gt;
&lt;br /&gt;
Setting this means I end up with 6 backups which were done most recently, then one of those gets hived off to become the beta backup, which it keeps 7 of, one of which gets hived off as gamma, and so on. This means you have multiple alpha backups fairly recently, multiple older beta backups representing days then gamma representing weeks and delta backups going back months. Set this according to how many backups you want to have.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
retain	alpha	6&lt;br /&gt;
retain	beta	7&lt;br /&gt;
retain	gamma	4&lt;br /&gt;
retain	delta	3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And what to backup:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Local&lt;br /&gt;
backup	/home/			local/&lt;br /&gt;
backup	/etc/			local/&lt;br /&gt;
&lt;br /&gt;
# Remote&lt;br /&gt;
backup	user@remote:/home/user/	remote/		exclude=/home/user/Downloads&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In this case, every 7th &amp;lt;samp&amp;gt;daily&amp;lt;/samp&amp;gt; backup is saved as a &amp;lt;samp&amp;gt;weekly&amp;lt;/samp&amp;gt; backup, every 4th &amp;lt;samp&amp;gt;weekly&amp;lt;/samp&amp;gt; backup is retained as a &amp;lt;samp&amp;gt;monthly&amp;lt;/samp&amp;gt; backup, and every 12th &amp;lt;samp&amp;gt;monthly&amp;lt;/samp&amp;gt; backup is deleted. The folders &amp;lt;samp&amp;gt;/home&amp;lt;/samp&amp;gt; and &amp;lt;samp&amp;gt;/etc&amp;lt;/samp&amp;gt; from the local machine are backed up to &amp;lt;samp&amp;gt;/mnt/backup/local/&amp;lt;/samp&amp;gt;, while it uses &amp;lt;samp&amp;gt;ssh&amp;lt;/samp&amp;gt; to back up the folder &amp;lt;samp&amp;gt;/home/user&amp;lt;/samp&amp;gt; on the machine &amp;lt;samp&amp;gt;remote&amp;lt;/samp&amp;gt; to &amp;lt;samp&amp;gt;/mnt/backup/remote/&amp;lt;/samp&amp;gt;. Make sure &amp;lt;samp&amp;gt;root&amp;lt;/samp&amp;gt; has passwordless &amp;lt;samp&amp;gt;ssh&amp;lt;/samp&amp;gt; access to the machines you want to backup over the internet (i.e. run &amp;lt;samp&amp;gt;ssh-keygen&amp;lt;/samp&amp;gt; and &amp;lt;samp&amp;gt;ssh-copy-id&amp;lt;/samp&amp;gt; as &amp;lt;samp&amp;gt;root&amp;lt;/samp&amp;gt;).&amp;lt;BR&amp;gt;&lt;br /&gt;
The last line also shows an example of how you can exclude parts of the location from backups.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
To test that your config file has the correct syntax:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsnapshot configtest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To check what the system would do when running a backup without executing the commands, i.e. a dry run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsnapshot -t alpha&lt;br /&gt;
rsnapshot -t beta&lt;br /&gt;
rsnapshot -t gamma&lt;br /&gt;
rsnapshot -t delta&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Finally, perform the first backup:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsnapshot alpha&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The last part might take a while. Subsequent backups should be much faster, as it will then only have to copy files that have changed since the last backup.&lt;br /&gt;
&lt;br /&gt;
== Automation ==&lt;br /&gt;
After setting up and testing &amp;lt;samp&amp;gt;rsnapshot&amp;lt;/samp&amp;gt; as described above, the next step is to make [[cron|&amp;lt;samp&amp;gt;cron&amp;lt;/samp&amp;gt;]] automatically run &amp;lt;samp&amp;gt;rsnapshot&amp;lt;/samp&amp;gt; at fixed intervals. The easiest way to achieve this is to create a few scripts in the folders &amp;lt;samp&amp;gt;/etc/periodic/*&amp;lt;/samp&amp;gt; that &amp;lt;samp&amp;gt;crond&amp;lt;/samp&amp;gt; monitors. The script below will write the appropriate contents to those files and make them executable:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
cd /etc/periodic&lt;br /&gt;
dirs=(&amp;quot;daily&amp;quot; &amp;quot;weekly&amp;quot; &amp;quot;monthly&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
for dir in &amp;quot;${dirs[@]}&amp;quot;; do&lt;br /&gt;
    echo -e &amp;quot;#!/bin/sh\nexec /usr/bin/rsnapshot $dir&amp;quot; &amp;gt; &amp;quot;$dir/rsnapshot&amp;quot;&lt;br /&gt;
    chmod +x &amp;quot;$dir/rsnapshot&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/periodic/hourly/rsnapshot|#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
exec /usr/bin/rsnapshot alpha&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/periodic/daily/rsnapshot|#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
exec /usr/bin/rsnapshot beta&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/periodic/weekly/rsnapshot|#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
exec /usr/bin/rsnapshot gamma&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/periodic/monthly/rsnapshot|#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
exec /usr/bin/rsnapshot delta&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remember to make the scripts executable:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x /etc/periodic/*/rsnapshot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
After that, test that the scripts work as expected:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
run-parts /etc/periodic/hourly&lt;br /&gt;
run-parts /etc/periodic/daily&lt;br /&gt;
run-parts /etc/periodic/weekly&lt;br /&gt;
run-parts /etc/periodic/monthly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Assuming &amp;lt;samp&amp;gt;crond&amp;lt;/samp&amp;gt; is set to start at boot (the default), your system should now make backups automatically.&lt;br /&gt;
&lt;br /&gt;
[[Category:System Administration]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Talk:Rsnapshot&amp;diff=23210</id>
		<title>Talk:Rsnapshot</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Talk:Rsnapshot&amp;diff=23210"/>
		<updated>2023-04-18T22:47:51Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: rsnapshot automation script broken&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Automation script is not working ==&lt;br /&gt;
&lt;br /&gt;
Automation script is not working and having trouble fixing it [[User:Jahway603|Jahway603]] ([[User talk:Jahway603|talk]]) 22:47, 18 April 2023 (UTC)&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Rsnapshot&amp;diff=23209</id>
		<title>Rsnapshot</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Rsnapshot&amp;diff=23209"/>
		<updated>2023-04-18T22:35:54Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: Fixed rsnapshot test commands while configuring on an Alpine system&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://rsnapshot.org/ &amp;lt;samp&amp;gt;rsnapshot&amp;lt;/samp&amp;gt;] is a filesystem backup utility based on [[rsync|&amp;lt;samp&amp;gt;rsync&amp;lt;/samp&amp;gt;]]. Using &amp;lt;samp&amp;gt;rsnapshot&amp;lt;/samp&amp;gt;, it is possible to take snapshots of your filesystems at different points in time. Using hard links, rsnapshot creates the illusion of multiple full backups, while only taking up the space of one full backup plus differences. When coupled with &amp;lt;samp&amp;gt;ssh&amp;lt;/samp&amp;gt;, it is possible to take snapshots of remote filesystems as well. This document is a tutorial on the installation and configuration of rsnapshot.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
To install rsnapshot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apk add rsnapshot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
To configure &amp;lt;samp&amp;gt;rsnapshot&amp;lt;/samp&amp;gt;, copy the example configuration &amp;lt;samp&amp;gt;/etc/rsnapshot.conf.default&amp;lt;/samp&amp;gt; to &amp;lt;samp&amp;gt;/etc/rsnapshot.conf&amp;lt;/samp&amp;gt;, and edit it to your needs based on the comments and the [http://rsnapshot.org/rsnapshot/docs/docbook/rest.html official documentation]. Note that &amp;lt;samp&amp;gt;rsnapshot&amp;lt;/samp&amp;gt; requires tabs between options and values in &amp;lt;samp&amp;gt;rsnapshot.conf&amp;lt;/samp&amp;gt;. This is done so spaces can be included in filenames without requiring any extra escaping or quoting.&lt;br /&gt;
&lt;br /&gt;
The most important parts to modify are where to store the backups:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snapshot_root	/mnt/backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
How many backups to retain:&lt;br /&gt;
&lt;br /&gt;
These settings used to be called &amp;quot;hourly, daily, weekly, monthly&amp;quot; in older releases of rsnapshot, but were changed to &amp;quot;alpha, beta, gamma, delta&amp;quot; because the time interval between backups is arbitrary.&lt;br /&gt;
&lt;br /&gt;
Setting this means I end up with 6 backups which were done most recently, then one of those gets hived off to become the beta backup, which it keeps 7 of, one of which gets hived off as gamma, and so on. This means you have multiple alpha backups fairly recently, multiple older beta backups representing days then gamma representing weeks and delta backups going back months. Set this according to how many backups you want to have.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
retain	alpha	6&lt;br /&gt;
retain	beta	7&lt;br /&gt;
retain	gamma	4&lt;br /&gt;
retain	delta	3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And what to backup:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Local&lt;br /&gt;
backup	/home/			local/&lt;br /&gt;
backup	/etc/			local/&lt;br /&gt;
&lt;br /&gt;
# Remote&lt;br /&gt;
backup	user@remote:/home/user/	remote/		exclude=/home/user/Downloads&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In this case, every 7th &amp;lt;samp&amp;gt;daily&amp;lt;/samp&amp;gt; backup is saved as a &amp;lt;samp&amp;gt;weekly&amp;lt;/samp&amp;gt; backup, every 4th &amp;lt;samp&amp;gt;weekly&amp;lt;/samp&amp;gt; backup is retained as a &amp;lt;samp&amp;gt;monthly&amp;lt;/samp&amp;gt; backup, and every 12th &amp;lt;samp&amp;gt;monthly&amp;lt;/samp&amp;gt; backup is deleted. The folders &amp;lt;samp&amp;gt;/home&amp;lt;/samp&amp;gt; and &amp;lt;samp&amp;gt;/etc&amp;lt;/samp&amp;gt; from the local machine are backed up to &amp;lt;samp&amp;gt;/mnt/backup/local/&amp;lt;/samp&amp;gt;, while it uses &amp;lt;samp&amp;gt;ssh&amp;lt;/samp&amp;gt; to back up the folder &amp;lt;samp&amp;gt;/home/user&amp;lt;/samp&amp;gt; on the machine &amp;lt;samp&amp;gt;remote&amp;lt;/samp&amp;gt; to &amp;lt;samp&amp;gt;/mnt/backup/remote/&amp;lt;/samp&amp;gt;. Make sure &amp;lt;samp&amp;gt;root&amp;lt;/samp&amp;gt; has passwordless &amp;lt;samp&amp;gt;ssh&amp;lt;/samp&amp;gt; access to the machines you want to backup over the internet (i.e. run &amp;lt;samp&amp;gt;ssh-keygen&amp;lt;/samp&amp;gt; and &amp;lt;samp&amp;gt;ssh-copy-id&amp;lt;/samp&amp;gt; as &amp;lt;samp&amp;gt;root&amp;lt;/samp&amp;gt;).&amp;lt;BR&amp;gt;&lt;br /&gt;
The last line also shows an example of how you can exclude parts of the location from backups.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
To test that your config file has the correct syntax:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsnapshot configtest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To check what the system would do when running a backup without executing the commands, i.e. a dry run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsnapshot -t alpha&lt;br /&gt;
rsnapshot -t beta&lt;br /&gt;
rsnapshot -t gamma&lt;br /&gt;
rsnapshot -t delta&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Finally, perform the first backup:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsnapshot alpha&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The last part might take a while. Subsequent backups should be much faster, as it will then only have to copy files that have changed since the last backup.&lt;br /&gt;
&lt;br /&gt;
== Automation ==&lt;br /&gt;
After setting up and testing &amp;lt;samp&amp;gt;rsnapshot&amp;lt;/samp&amp;gt; as described above, the next step is to make [[cron|&amp;lt;samp&amp;gt;cron&amp;lt;/samp&amp;gt;]] automatically run &amp;lt;samp&amp;gt;rsnapshot&amp;lt;/samp&amp;gt; at fixed intervals. The easiest way to achieve this is to create a few scripts in the folders &amp;lt;samp&amp;gt;/etc/periodic/*&amp;lt;/samp&amp;gt; that &amp;lt;samp&amp;gt;crond&amp;lt;/samp&amp;gt; monitors. The script below will write the appropriate contents to those files and make them executable:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
cd /etc/periodic&lt;br /&gt;
dirs=(&amp;quot;daily&amp;quot; &amp;quot;weekly&amp;quot; &amp;quot;monthly&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
for dir in &amp;quot;${dirs[@]}&amp;quot;; do&lt;br /&gt;
    echo -e &amp;quot;#!/bin/sh\nexec /usr/bin/rsnapshot $dir&amp;quot; &amp;gt; &amp;quot;$dir/rsnapshot&amp;quot;&lt;br /&gt;
    chmod +x &amp;quot;$dir/rsnapshot&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/periodic/daily/rsnapshot|#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
exec /usr/bin/rsnapshot daily&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/periodic/weekly/rsnapshot|#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
exec /usr/bin/rsnapshot weekly&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/periodic/monthly/rsnapshot|#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
exec /usr/bin/rsnapshot monthly&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remember to make the scripts executable:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x /etc/periodic/*/rsnapshot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
After that, test that the scripts work as expected:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
run-parts /etc/periodic/daily&lt;br /&gt;
run-parts /etc/periodic/weekly&lt;br /&gt;
run-parts /etc/periodic/monthly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Assuming &amp;lt;samp&amp;gt;crond&amp;lt;/samp&amp;gt; is set to start at boot (the default), your system should now make backups automatically.&lt;br /&gt;
&lt;br /&gt;
[[Category:System Administration]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Rsnapshot&amp;diff=23208</id>
		<title>Rsnapshot</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Rsnapshot&amp;diff=23208"/>
		<updated>2023-04-18T22:31:37Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: Updated with new options for retain BACKUP LEVELS / INTERVALS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://rsnapshot.org/ &amp;lt;samp&amp;gt;rsnapshot&amp;lt;/samp&amp;gt;] is a filesystem backup utility based on [[rsync|&amp;lt;samp&amp;gt;rsync&amp;lt;/samp&amp;gt;]]. Using &amp;lt;samp&amp;gt;rsnapshot&amp;lt;/samp&amp;gt;, it is possible to take snapshots of your filesystems at different points in time. Using hard links, rsnapshot creates the illusion of multiple full backups, while only taking up the space of one full backup plus differences. When coupled with &amp;lt;samp&amp;gt;ssh&amp;lt;/samp&amp;gt;, it is possible to take snapshots of remote filesystems as well. This document is a tutorial on the installation and configuration of rsnapshot.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
To install rsnapshot:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apk add rsnapshot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
To configure &amp;lt;samp&amp;gt;rsnapshot&amp;lt;/samp&amp;gt;, copy the example configuration &amp;lt;samp&amp;gt;/etc/rsnapshot.conf.default&amp;lt;/samp&amp;gt; to &amp;lt;samp&amp;gt;/etc/rsnapshot.conf&amp;lt;/samp&amp;gt;, and edit it to your needs based on the comments and the [http://rsnapshot.org/rsnapshot/docs/docbook/rest.html official documentation]. Note that &amp;lt;samp&amp;gt;rsnapshot&amp;lt;/samp&amp;gt; requires tabs between options and values in &amp;lt;samp&amp;gt;rsnapshot.conf&amp;lt;/samp&amp;gt;. This is done so spaces can be included in filenames without requiring any extra escaping or quoting.&lt;br /&gt;
&lt;br /&gt;
The most important parts to modify are where to store the backups:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
snapshot_root	/mnt/backup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
How many backups to retain:&lt;br /&gt;
&lt;br /&gt;
These settings used to be called &amp;quot;hourly, daily, weekly, monthly&amp;quot; in older releases of rsnapshot, but were changed to &amp;quot;alpha, beta, gamma, delta&amp;quot; because the time interval between backups is arbitrary.&lt;br /&gt;
&lt;br /&gt;
Setting this means I end up with 6 backups which were done most recently, then one of those gets hived off to become the beta backup, which it keeps 7 of, one of which gets hived off as gamma, and so on. This means you have multiple alpha backups fairly recently, multiple older beta backups representing days then gamma representing weeks and delta backups going back months. Set this according to how many backups you want to have.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
retain	alpha	6&lt;br /&gt;
retain	beta	7&lt;br /&gt;
retain	gamma	4&lt;br /&gt;
retain	delta	3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And what to backup:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Local&lt;br /&gt;
backup	/home/			local/&lt;br /&gt;
backup	/etc/			local/&lt;br /&gt;
&lt;br /&gt;
# Remote&lt;br /&gt;
backup	user@remote:/home/user/	remote/		exclude=/home/user/Downloads&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In this case, every 7th &amp;lt;samp&amp;gt;daily&amp;lt;/samp&amp;gt; backup is saved as a &amp;lt;samp&amp;gt;weekly&amp;lt;/samp&amp;gt; backup, every 4th &amp;lt;samp&amp;gt;weekly&amp;lt;/samp&amp;gt; backup is retained as a &amp;lt;samp&amp;gt;monthly&amp;lt;/samp&amp;gt; backup, and every 12th &amp;lt;samp&amp;gt;monthly&amp;lt;/samp&amp;gt; backup is deleted. The folders &amp;lt;samp&amp;gt;/home&amp;lt;/samp&amp;gt; and &amp;lt;samp&amp;gt;/etc&amp;lt;/samp&amp;gt; from the local machine are backed up to &amp;lt;samp&amp;gt;/mnt/backup/local/&amp;lt;/samp&amp;gt;, while it uses &amp;lt;samp&amp;gt;ssh&amp;lt;/samp&amp;gt; to back up the folder &amp;lt;samp&amp;gt;/home/user&amp;lt;/samp&amp;gt; on the machine &amp;lt;samp&amp;gt;remote&amp;lt;/samp&amp;gt; to &amp;lt;samp&amp;gt;/mnt/backup/remote/&amp;lt;/samp&amp;gt;. Make sure &amp;lt;samp&amp;gt;root&amp;lt;/samp&amp;gt; has passwordless &amp;lt;samp&amp;gt;ssh&amp;lt;/samp&amp;gt; access to the machines you want to backup over the internet (i.e. run &amp;lt;samp&amp;gt;ssh-keygen&amp;lt;/samp&amp;gt; and &amp;lt;samp&amp;gt;ssh-copy-id&amp;lt;/samp&amp;gt; as &amp;lt;samp&amp;gt;root&amp;lt;/samp&amp;gt;).&amp;lt;BR&amp;gt;&lt;br /&gt;
The last line also shows an example of how you can exclude parts of the location from backups.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
To test that your config file has the correct syntax:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsnapshot configtest&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To check what the system would do when running a backup without executing the commands, i.e. a dry run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsnapshot -t daily&lt;br /&gt;
rsnapshot -t weekly&lt;br /&gt;
rsnapshot -t monthly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Finally, perform the first backup:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsnapshot daily&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The last part might take a while. Subsequent backups should be much faster, as it will then only have to copy files that have changed since the last backup.&lt;br /&gt;
&lt;br /&gt;
== Automation ==&lt;br /&gt;
After setting up and testing &amp;lt;samp&amp;gt;rsnapshot&amp;lt;/samp&amp;gt; as described above, the next step is to make [[cron|&amp;lt;samp&amp;gt;cron&amp;lt;/samp&amp;gt;]] automatically run &amp;lt;samp&amp;gt;rsnapshot&amp;lt;/samp&amp;gt; at fixed intervals. The easiest way to achieve this is to create a few scripts in the folders &amp;lt;samp&amp;gt;/etc/periodic/*&amp;lt;/samp&amp;gt; that &amp;lt;samp&amp;gt;crond&amp;lt;/samp&amp;gt; monitors. The script below will write the appropriate contents to those files and make them executable:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
cd /etc/periodic&lt;br /&gt;
dirs=(&amp;quot;daily&amp;quot; &amp;quot;weekly&amp;quot; &amp;quot;monthly&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
for dir in &amp;quot;${dirs[@]}&amp;quot;; do&lt;br /&gt;
    echo -e &amp;quot;#!/bin/sh\nexec /usr/bin/rsnapshot $dir&amp;quot; &amp;gt; &amp;quot;$dir/rsnapshot&amp;quot;&lt;br /&gt;
    chmod +x &amp;quot;$dir/rsnapshot&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/periodic/daily/rsnapshot|#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
exec /usr/bin/rsnapshot daily&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/periodic/weekly/rsnapshot|#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
exec /usr/bin/rsnapshot weekly&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Cat|/etc/periodic/monthly/rsnapshot|#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
exec /usr/bin/rsnapshot monthly&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remember to make the scripts executable:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
chmod +x /etc/periodic/*/rsnapshot&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
After that, test that the scripts work as expected:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
run-parts /etc/periodic/daily&lt;br /&gt;
run-parts /etc/periodic/weekly&lt;br /&gt;
run-parts /etc/periodic/monthly&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Assuming &amp;lt;samp&amp;gt;crond&amp;lt;/samp&amp;gt; is set to start at boot (the default), your system should now make backups automatically.&lt;br /&gt;
&lt;br /&gt;
[[Category:System Administration]]&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Talk:Rsnapshot&amp;diff=23207</id>
		<title>Talk:Rsnapshot</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Talk:Rsnapshot&amp;diff=23207"/>
		<updated>2023-04-18T21:28:51Z</updated>

		<summary type="html">&lt;p&gt;Jahway603: rsnapshot retain options changed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Change retain section ==&lt;br /&gt;
&lt;br /&gt;
rsnapshot.conf does not use the same # BACKUP LEVELS / INTERVALS # as documented in this wiki article anymore.&lt;br /&gt;
&lt;br /&gt;
From this Rockylinux rsnapshot setup link, https://docs.rockylinux.org/guides/backup/rsnapshot_backup/, we find the new retain options:&lt;br /&gt;
This has been changed from earlier versions of rsnapshot from &amp;quot;hourly, daily, monthly, yearly&amp;quot; to &amp;quot;alpha, beta, gamma, delta&amp;quot; which is a bit confusing.&lt;br /&gt;
&lt;br /&gt;
TODO: Research what these are and document it in this wiki [[User:Jahway603|Jahway603]] ([[User talk:Jahway603|talk]]) 21:28, 18 April 2023 (UTC)&lt;/div&gt;</summary>
		<author><name>Jahway603</name></author>
	</entry>
</feed>