add Prosody Photo Uploads
This commit is contained in:
parent
8321671231
commit
0f885a69fd
@ -5,6 +5,7 @@ authors: ["trent"]
|
|||||||
# Trent's Blog
|
# Trent's Blog
|
||||||
## **Posts By Date**
|
## **Posts By Date**
|
||||||
|
|
||||||
|
* [2021-01-25: Prosody Photo Uploads](posts/prosody-photo-uploads.md){target=_blank}
|
||||||
* [2021-01-09: Xmpp Apt Notifications](posts/xmpp-apt-notifications.md){target=_blank}
|
* [2021-01-09: Xmpp Apt Notifications](posts/xmpp-apt-notifications.md){target=_blank}
|
||||||
* [2020-12-20: Apache Virtual Hosts](posts/apache-virtual-hosts.md){target=_blank}
|
* [2020-12-20: Apache Virtual Hosts](posts/apache-virtual-hosts.md){target=_blank}
|
||||||
* [2020-12-19: SENDXMPPHandler for Python Logging](posts/sendxmpp-handler-for-python-logging.md){target=_blank}
|
* [2020-12-19: SENDXMPPHandler for Python Logging](posts/sendxmpp-handler-for-python-logging.md){target=_blank}
|
||||||
|
252
docs/posts/prosody-photo-uploads.md
Normal file
252
docs/posts/prosody-photo-uploads.md
Normal file
@ -0,0 +1,252 @@
|
|||||||
|
---
|
||||||
|
title: "Prosody Photo Uploads"
|
||||||
|
date: 2021-01-25
|
||||||
|
draft: false
|
||||||
|
tags: ["xmpp","prosody","debian","letsencrypt"]
|
||||||
|
authors: ["trent"]
|
||||||
|
---
|
||||||
|
date: 2021-01-25
|
||||||
|
|
||||||
|
## **Introduction**
|
||||||
|
|
||||||
|
Install [prosody](https://prosody.im/){target=_blank} on [Debian 10](https://www.debian.org/){target=_blank}
|
||||||
|
with photoupload, postgresql database, and letsencrypt certs.
|
||||||
|
|
||||||
|
## **DNS**
|
||||||
|
|
||||||
|
* Log into your dns provider and create A and AAAA records for *xmpp.example.com*
|
||||||
|
* Log into your dns provider and create A and AAAA records for *xmppupload.example.com*
|
||||||
|
|
||||||
|
## **FireWall**
|
||||||
|
|
||||||
|
Incidentally, you definitely do want to use a non-standard ssh port for connecting over the internet.
|
||||||
|
|
||||||
|
I would suggest that a firewall is important, because I couldn't figure out how to completely disable
|
||||||
|
port 5280 for the http protocol, in the clear, in the prosody config.
|
||||||
|
|
||||||
|
### ports
|
||||||
|
|
||||||
|
* `80/tcp`, `443/tcp` for certbot
|
||||||
|
* `4444/tcp` i.e. port 4444 for ssh
|
||||||
|
* `5222/tcp` for xmpp-client
|
||||||
|
* `5269/tcp` for xmpp-server
|
||||||
|
* `5281/tcp` for https connections to prosody for uploads and photos
|
||||||
|
|
||||||
|
### FireWall with UFW
|
||||||
|
|
||||||
|
* `ufw allow http`
|
||||||
|
* `ufw allow https`
|
||||||
|
* `ufw allow xmpp-client`
|
||||||
|
* `ufw allow xmpp-server`
|
||||||
|
* `ufw allow 5281/tcp`
|
||||||
|
* `ufw allow 4444/tcp` i.e. if 4444 for ssh
|
||||||
|
* `ufw enable` to start the firewall
|
||||||
|
|
||||||
|
## **Postgresql Database**
|
||||||
|
### Install the postgresql database.
|
||||||
|
```console
|
||||||
|
apt-get install postgresql postgresql-contrib
|
||||||
|
```
|
||||||
|
Log into the psql command line.
|
||||||
|
```console
|
||||||
|
sudo -u postgres psql
|
||||||
|
```
|
||||||
|
Create prosody database
|
||||||
|
```sql
|
||||||
|
postgres=# CREATE DATABASE prosody;
|
||||||
|
```
|
||||||
|
Creat prosody user
|
||||||
|
```sql
|
||||||
|
postgres=# CREATE ROLE prosody WITH LOGIN;
|
||||||
|
```
|
||||||
|
Set password for user
|
||||||
|
```sql
|
||||||
|
postgres=# \password prosody
|
||||||
|
```
|
||||||
|
Quit `psql`
|
||||||
|
```sql
|
||||||
|
postgres=# \q
|
||||||
|
```
|
||||||
|
### allow authentication in `pg_hba.conf`
|
||||||
|
To connect to postgresql via unix socket
|
||||||
|
```cfg
|
||||||
|
# /etc/postgresql/11/main/pg_hba.conf
|
||||||
|
# make sure this line is above
|
||||||
|
local prosody prosody md5
|
||||||
|
|
||||||
|
# make sure this line is below
|
||||||
|
local all all peer
|
||||||
|
```
|
||||||
|
or i.e. through a wireguard tunnel
|
||||||
|
```cfg
|
||||||
|
# /etc/postgresql/11/main/pg_hba.conf
|
||||||
|
# where 10.0.22.5 is the ip address of the machine that prosody will run on
|
||||||
|
host prosody prosody 10.0.22.5/32 md5
|
||||||
|
```
|
||||||
|
|
||||||
|
and then restart postgresql
|
||||||
|
```console
|
||||||
|
systemctl restart postgresql
|
||||||
|
```
|
||||||
|
|
||||||
|
## **Prosody**
|
||||||
|
### Install Prosody
|
||||||
|
```console
|
||||||
|
apt install prosody prosody-modules lua-dbi-postgresql
|
||||||
|
```
|
||||||
|
### Configure Prosody
|
||||||
|
backup the prosody config file
|
||||||
|
```console
|
||||||
|
cp /etc/prosody/prosody.cfg.lua /etc/prosody/prosody.cfg.lua.bak
|
||||||
|
```
|
||||||
|
|
||||||
|
if you want to disable advertising version and uptime, allow message archives,
|
||||||
|
and disallow registration, change this
|
||||||
|
```cfg
|
||||||
|
-- /etc/prosody/prosody.cfg.lua
|
||||||
|
modules_enabled = {
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
-- Nice to have
|
||||||
|
"version"; -- Replies to server version requests
|
||||||
|
"uptime"; -- Report how long server has been running
|
||||||
|
"time"; -- Let others know the time here on this server
|
||||||
|
"ping"; -- Replies to XMPP pings with pongs
|
||||||
|
"register"; -- Allow users to register on this server using a client and change passwords
|
||||||
|
--"mam"; -- Store messages in an archive and allow users to access it
|
||||||
|
--"csi_simple"; -- Simple Mobile optimizations
|
||||||
|
|
||||||
|
...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
to this
|
||||||
|
```cfg
|
||||||
|
-- /etc/prosody/prosody.cfg.lua
|
||||||
|
modules_enabled = {
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
-- Nice to have
|
||||||
|
--"version"; -- Replies to server version requests
|
||||||
|
--"uptime"; -- Report how long server has been running
|
||||||
|
"time"; -- Let others know the time here on this server
|
||||||
|
"ping"; -- Replies to XMPP pings with pongs
|
||||||
|
--"register"; -- Allow users to register on this server using a client and change passwords
|
||||||
|
"mam"; -- Store messages in an archive and allow users to access it
|
||||||
|
--"csi_simple"; -- Simple Mobile optimizations
|
||||||
|
|
||||||
|
...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
to force certificate authentication for server-to-server connections,
|
||||||
|
make the following edit around line 123
|
||||||
|
```cfg
|
||||||
|
-- /etc/prosody/prosody.cfg.lua
|
||||||
|
-- Force certificate authentication for server-to-server connections?
|
||||||
|
|
||||||
|
-- change this
|
||||||
|
s2s_secure_auth = false
|
||||||
|
-- to this
|
||||||
|
s2s_secure_auth = true
|
||||||
|
```
|
||||||
|
|
||||||
|
around line 147 enable sql
|
||||||
|
```cfg
|
||||||
|
-- /etc/prosody/prosody.cfg.lua
|
||||||
|
|
||||||
|
-- change this
|
||||||
|
--storage = "sql"
|
||||||
|
|
||||||
|
-- to this
|
||||||
|
storage = "sql"
|
||||||
|
```
|
||||||
|
|
||||||
|
and describe the database connection
|
||||||
|
```cfg
|
||||||
|
-- /etc/prosody/prosody.cfg.lua
|
||||||
|
|
||||||
|
-- change this
|
||||||
|
--sql = {
|
||||||
|
driver = "PostgreSQL",
|
||||||
|
database = "prosody",
|
||||||
|
username = "prosody",
|
||||||
|
password = "secret",
|
||||||
|
host = "localhost"
|
||||||
|
}
|
||||||
|
|
||||||
|
-- to this
|
||||||
|
sql = {
|
||||||
|
driver = "PostgreSQL",
|
||||||
|
database = "prosody",
|
||||||
|
username = "prosody",
|
||||||
|
password = "secret",
|
||||||
|
host = "localhost"
|
||||||
|
}
|
||||||
|
|
||||||
|
-- or to use a unix socket in Debian 10
|
||||||
|
sql = {
|
||||||
|
driver = "PostgreSQL",
|
||||||
|
database = "prosody",
|
||||||
|
username = "prosody",
|
||||||
|
password = "secret",
|
||||||
|
host = "/var/run/postgresql"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
somewhere around line 196, describe the certificate file for the upoad subdomain
|
||||||
|
```cfg
|
||||||
|
-- /etc/prosody/prosody.cfg.lua
|
||||||
|
|
||||||
|
-- change this
|
||||||
|
--https_certificate = "/etc/prosody/certs/localhost.crt"
|
||||||
|
|
||||||
|
-- to this
|
||||||
|
https_certificate = "/etc/prosody/certs/xmppupload.example.com.crt"
|
||||||
|
```
|
||||||
|
|
||||||
|
somewhere around line 210 describe your virtualhost
|
||||||
|
```cfg
|
||||||
|
-- /etc/prosody/prosody.cfg.lua
|
||||||
|
VirtualHost "xmpp.example.com"
|
||||||
|
|
||||||
|
disco_items = {
|
||||||
|
{"xmppupload.example.com"},
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
add the following to the end of the file
|
||||||
|
```cfg
|
||||||
|
-- /etc/prosody/prosody.cfg.lua
|
||||||
|
Component "xmppupload.example.com" "http_upload"
|
||||||
|
```
|
||||||
|
|
||||||
|
and then restart prosody
|
||||||
|
```console
|
||||||
|
systemctl restart prososdy
|
||||||
|
```
|
||||||
|
|
||||||
|
## **Certbot**
|
||||||
|
install certbot
|
||||||
|
```console
|
||||||
|
apt install certbot
|
||||||
|
```
|
||||||
|
get certificates
|
||||||
|
```console
|
||||||
|
certbot certonly -d xmpp.example.com
|
||||||
|
certbot certonly -d xmppupload.example.com
|
||||||
|
```
|
||||||
|
import the certificates into prosody and restart prosody
|
||||||
|
```console
|
||||||
|
prosodyctl --root cert import /etc/letsencrypt/live
|
||||||
|
systemctl restart prosody
|
||||||
|
```
|
||||||
|
create the following renewal-hook for letsencrypt
|
||||||
|
```console
|
||||||
|
#!/bin/bash
|
||||||
|
# /etc/letsencrypt/renewal-hooks/deploy/prosody_deploy_hook
|
||||||
|
|
||||||
|
prosodyctl --root cert import /etc/letsencrypt/live
|
||||||
|
```
|
@ -19,6 +19,7 @@ markdown_extensions:
|
|||||||
nav:
|
nav:
|
||||||
- Home:
|
- Home:
|
||||||
- Home: index.md
|
- Home: index.md
|
||||||
|
- posts/prosody-photo-uploads.md
|
||||||
- posts/xmpp-apt-notifications.md
|
- posts/xmpp-apt-notifications.md
|
||||||
- posts/apache-virtual-hosts.md
|
- posts/apache-virtual-hosts.md
|
||||||
- posts/sendxmpp-handler-for-python-logging.md
|
- posts/sendxmpp-handler-for-python-logging.md
|
||||||
|
@ -225,6 +225,18 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="/posts/prosody-photo-uploads/" class="md-nav__link">
|
||||||
|
Prosody Photo Uploads
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="/posts/xmpp-apt-notifications/" class="md-nav__link">
|
<a href="/posts/xmpp-apt-notifications/" class="md-nav__link">
|
||||||
Xmpp Apt Notifications
|
Xmpp Apt Notifications
|
||||||
|
@ -281,6 +281,18 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="posts/prosody-photo-uploads/" class="md-nav__link">
|
||||||
|
Prosody Photo Uploads
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="posts/xmpp-apt-notifications/" class="md-nav__link">
|
<a href="posts/xmpp-apt-notifications/" class="md-nav__link">
|
||||||
Xmpp Apt Notifications
|
Xmpp Apt Notifications
|
||||||
@ -515,6 +527,7 @@
|
|||||||
<h1 id="trents-blog">Trent's Blog</h1>
|
<h1 id="trents-blog">Trent's Blog</h1>
|
||||||
<h2 id="posts-by-date"><strong>Posts By Date</strong></h2>
|
<h2 id="posts-by-date"><strong>Posts By Date</strong></h2>
|
||||||
<ul>
|
<ul>
|
||||||
|
<li><a href="posts/prosody-photo-uploads/" target="_blank">2021-01-25: Prosody Photo Uploads</a></li>
|
||||||
<li><a href="posts/xmpp-apt-notifications/" target="_blank">2021-01-09: Xmpp Apt Notifications</a></li>
|
<li><a href="posts/xmpp-apt-notifications/" target="_blank">2021-01-09: Xmpp Apt Notifications</a></li>
|
||||||
<li><a href="posts/apache-virtual-hosts/" target="_blank">2020-12-20: Apache Virtual Hosts</a></li>
|
<li><a href="posts/apache-virtual-hosts/" target="_blank">2020-12-20: Apache Virtual Hosts</a></li>
|
||||||
<li><a href="posts/sendxmpp-handler-for-python-logging/" target="_blank">2020-12-19: SENDXMPPHandler for Python Logging</a></li>
|
<li><a href="posts/sendxmpp-handler-for-python-logging/" target="_blank">2020-12-19: SENDXMPPHandler for Python Logging</a></li>
|
||||||
@ -553,13 +566,13 @@
|
|||||||
<nav class="md-footer-nav__inner md-grid" aria-label="Footer">
|
<nav class="md-footer-nav__inner md-grid" aria-label="Footer">
|
||||||
|
|
||||||
|
|
||||||
<a href="posts/xmpp-apt-notifications/" class="md-footer-nav__link md-footer-nav__link--next" rel="next">
|
<a href="posts/prosody-photo-uploads/" class="md-footer-nav__link md-footer-nav__link--next" rel="next">
|
||||||
<div class="md-footer-nav__title">
|
<div class="md-footer-nav__title">
|
||||||
<div class="md-ellipsis">
|
<div class="md-ellipsis">
|
||||||
<span class="md-footer-nav__direction">
|
<span class="md-footer-nav__direction">
|
||||||
Next
|
Next
|
||||||
</span>
|
</span>
|
||||||
Xmpp Apt Notifications
|
Prosody Photo Uploads
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="md-footer-nav__button md-icon">
|
<div class="md-footer-nav__button md-icon">
|
||||||
|
@ -234,6 +234,18 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="../posts/prosody-photo-uploads/" class="md-nav__link">
|
||||||
|
Prosody Photo Uploads
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../posts/xmpp-apt-notifications/" class="md-nav__link">
|
<a href="../posts/xmpp-apt-notifications/" class="md-nav__link">
|
||||||
Xmpp Apt Notifications
|
Xmpp Apt Notifications
|
||||||
|
@ -236,6 +236,18 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="../prosody-photo-uploads/" class="md-nav__link">
|
||||||
|
Prosody Photo Uploads
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../xmpp-apt-notifications/" class="md-nav__link">
|
<a href="../xmpp-apt-notifications/" class="md-nav__link">
|
||||||
Xmpp Apt Notifications
|
Xmpp Apt Notifications
|
||||||
|
@ -236,6 +236,18 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="../prosody-photo-uploads/" class="md-nav__link">
|
||||||
|
Prosody Photo Uploads
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../xmpp-apt-notifications/" class="md-nav__link">
|
<a href="../xmpp-apt-notifications/" class="md-nav__link">
|
||||||
Xmpp Apt Notifications
|
Xmpp Apt Notifications
|
||||||
|
@ -236,6 +236,18 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="../prosody-photo-uploads/" class="md-nav__link">
|
||||||
|
Prosody Photo Uploads
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../xmpp-apt-notifications/" class="md-nav__link">
|
<a href="../xmpp-apt-notifications/" class="md-nav__link">
|
||||||
Xmpp Apt Notifications
|
Xmpp Apt Notifications
|
||||||
|
@ -236,6 +236,18 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="../prosody-photo-uploads/" class="md-nav__link">
|
||||||
|
Prosody Photo Uploads
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../xmpp-apt-notifications/" class="md-nav__link">
|
<a href="../xmpp-apt-notifications/" class="md-nav__link">
|
||||||
Xmpp Apt Notifications
|
Xmpp Apt Notifications
|
||||||
|
@ -236,6 +236,18 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="../prosody-photo-uploads/" class="md-nav__link">
|
||||||
|
Prosody Photo Uploads
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../xmpp-apt-notifications/" class="md-nav__link">
|
<a href="../xmpp-apt-notifications/" class="md-nav__link">
|
||||||
Xmpp Apt Notifications
|
Xmpp Apt Notifications
|
||||||
|
@ -236,6 +236,18 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="../prosody-photo-uploads/" class="md-nav__link">
|
||||||
|
Prosody Photo Uploads
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../xmpp-apt-notifications/" class="md-nav__link">
|
<a href="../xmpp-apt-notifications/" class="md-nav__link">
|
||||||
Xmpp Apt Notifications
|
Xmpp Apt Notifications
|
||||||
|
@ -236,6 +236,18 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="../prosody-photo-uploads/" class="md-nav__link">
|
||||||
|
Prosody Photo Uploads
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../xmpp-apt-notifications/" class="md-nav__link">
|
<a href="../xmpp-apt-notifications/" class="md-nav__link">
|
||||||
Xmpp Apt Notifications
|
Xmpp Apt Notifications
|
||||||
|
@ -236,6 +236,18 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="../prosody-photo-uploads/" class="md-nav__link">
|
||||||
|
Prosody Photo Uploads
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../xmpp-apt-notifications/" class="md-nav__link">
|
<a href="../xmpp-apt-notifications/" class="md-nav__link">
|
||||||
Xmpp Apt Notifications
|
Xmpp Apt Notifications
|
||||||
|
1007
site/posts/prosody-photo-uploads/index.html
Normal file
1007
site/posts/prosody-photo-uploads/index.html
Normal file
File diff suppressed because it is too large
Load Diff
@ -236,6 +236,18 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="../prosody-photo-uploads/" class="md-nav__link">
|
||||||
|
Prosody Photo Uploads
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../xmpp-apt-notifications/" class="md-nav__link">
|
<a href="../xmpp-apt-notifications/" class="md-nav__link">
|
||||||
Xmpp Apt Notifications
|
Xmpp Apt Notifications
|
||||||
|
@ -236,6 +236,18 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="../prosody-photo-uploads/" class="md-nav__link">
|
||||||
|
Prosody Photo Uploads
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../xmpp-apt-notifications/" class="md-nav__link">
|
<a href="../xmpp-apt-notifications/" class="md-nav__link">
|
||||||
Xmpp Apt Notifications
|
Xmpp Apt Notifications
|
||||||
|
@ -236,6 +236,18 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="../prosody-photo-uploads/" class="md-nav__link">
|
||||||
|
Prosody Photo Uploads
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="md-nav__item">
|
<li class="md-nav__item">
|
||||||
<a href="../xmpp-apt-notifications/" class="md-nav__link">
|
<a href="../xmpp-apt-notifications/" class="md-nav__link">
|
||||||
Xmpp Apt Notifications
|
Xmpp Apt Notifications
|
||||||
|
@ -236,6 +236,18 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item">
|
||||||
|
<a href="../prosody-photo-uploads/" class="md-nav__link">
|
||||||
|
Prosody Photo Uploads
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="md-nav__item md-nav__item--active">
|
<li class="md-nav__item md-nav__item--active">
|
||||||
@ -629,7 +641,7 @@ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
|||||||
<div class="md-footer-nav">
|
<div class="md-footer-nav">
|
||||||
<nav class="md-footer-nav__inner md-grid" aria-label="Footer">
|
<nav class="md-footer-nav__inner md-grid" aria-label="Footer">
|
||||||
|
|
||||||
<a href="../.." class="md-footer-nav__link md-footer-nav__link--prev" rel="prev">
|
<a href="../prosody-photo-uploads/" class="md-footer-nav__link md-footer-nav__link--prev" rel="prev">
|
||||||
<div class="md-footer-nav__button md-icon">
|
<div class="md-footer-nav__button md-icon">
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
|
||||||
</div>
|
</div>
|
||||||
@ -638,7 +650,7 @@ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
|||||||
<span class="md-footer-nav__direction">
|
<span class="md-footer-nav__direction">
|
||||||
Previous
|
Previous
|
||||||
</span>
|
</span>
|
||||||
Home
|
Prosody Photo Uploads
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
|
File diff suppressed because one or more lines are too long
@ -1,59 +1,63 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><url>
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><url>
|
||||||
<loc>None</loc>
|
<loc>None</loc>
|
||||||
<lastmod>2021-01-10</lastmod>
|
<lastmod>2021-01-25</lastmod>
|
||||||
<changefreq>daily</changefreq>
|
<changefreq>daily</changefreq>
|
||||||
</url><url>
|
</url><url>
|
||||||
<loc>None</loc>
|
<loc>None</loc>
|
||||||
<lastmod>2021-01-10</lastmod>
|
<lastmod>2021-01-25</lastmod>
|
||||||
<changefreq>daily</changefreq>
|
<changefreq>daily</changefreq>
|
||||||
</url><url>
|
</url><url>
|
||||||
<loc>None</loc>
|
<loc>None</loc>
|
||||||
<lastmod>2021-01-10</lastmod>
|
<lastmod>2021-01-25</lastmod>
|
||||||
<changefreq>daily</changefreq>
|
<changefreq>daily</changefreq>
|
||||||
</url><url>
|
</url><url>
|
||||||
<loc>None</loc>
|
<loc>None</loc>
|
||||||
<lastmod>2021-01-10</lastmod>
|
<lastmod>2021-01-25</lastmod>
|
||||||
<changefreq>daily</changefreq>
|
<changefreq>daily</changefreq>
|
||||||
</url><url>
|
</url><url>
|
||||||
<loc>None</loc>
|
<loc>None</loc>
|
||||||
<lastmod>2021-01-10</lastmod>
|
<lastmod>2021-01-25</lastmod>
|
||||||
<changefreq>daily</changefreq>
|
<changefreq>daily</changefreq>
|
||||||
</url><url>
|
</url><url>
|
||||||
<loc>None</loc>
|
<loc>None</loc>
|
||||||
<lastmod>2021-01-10</lastmod>
|
<lastmod>2021-01-25</lastmod>
|
||||||
<changefreq>daily</changefreq>
|
<changefreq>daily</changefreq>
|
||||||
</url><url>
|
</url><url>
|
||||||
<loc>None</loc>
|
<loc>None</loc>
|
||||||
<lastmod>2021-01-10</lastmod>
|
<lastmod>2021-01-25</lastmod>
|
||||||
<changefreq>daily</changefreq>
|
<changefreq>daily</changefreq>
|
||||||
</url><url>
|
</url><url>
|
||||||
<loc>None</loc>
|
<loc>None</loc>
|
||||||
<lastmod>2021-01-10</lastmod>
|
<lastmod>2021-01-25</lastmod>
|
||||||
<changefreq>daily</changefreq>
|
<changefreq>daily</changefreq>
|
||||||
</url><url>
|
</url><url>
|
||||||
<loc>None</loc>
|
<loc>None</loc>
|
||||||
<lastmod>2021-01-10</lastmod>
|
<lastmod>2021-01-25</lastmod>
|
||||||
<changefreq>daily</changefreq>
|
<changefreq>daily</changefreq>
|
||||||
</url><url>
|
</url><url>
|
||||||
<loc>None</loc>
|
<loc>None</loc>
|
||||||
<lastmod>2021-01-10</lastmod>
|
<lastmod>2021-01-25</lastmod>
|
||||||
<changefreq>daily</changefreq>
|
<changefreq>daily</changefreq>
|
||||||
</url><url>
|
</url><url>
|
||||||
<loc>None</loc>
|
<loc>None</loc>
|
||||||
<lastmod>2021-01-10</lastmod>
|
<lastmod>2021-01-25</lastmod>
|
||||||
<changefreq>daily</changefreq>
|
<changefreq>daily</changefreq>
|
||||||
</url><url>
|
</url><url>
|
||||||
<loc>None</loc>
|
<loc>None</loc>
|
||||||
<lastmod>2021-01-10</lastmod>
|
<lastmod>2021-01-25</lastmod>
|
||||||
<changefreq>daily</changefreq>
|
<changefreq>daily</changefreq>
|
||||||
</url><url>
|
</url><url>
|
||||||
<loc>None</loc>
|
<loc>None</loc>
|
||||||
<lastmod>2021-01-10</lastmod>
|
<lastmod>2021-01-25</lastmod>
|
||||||
<changefreq>daily</changefreq>
|
<changefreq>daily</changefreq>
|
||||||
</url><url>
|
</url><url>
|
||||||
<loc>None</loc>
|
<loc>None</loc>
|
||||||
<lastmod>2021-01-10</lastmod>
|
<lastmod>2021-01-25</lastmod>
|
||||||
|
<changefreq>daily</changefreq>
|
||||||
|
</url><url>
|
||||||
|
<loc>None</loc>
|
||||||
|
<lastmod>2021-01-25</lastmod>
|
||||||
<changefreq>daily</changefreq>
|
<changefreq>daily</changefreq>
|
||||||
</url>
|
</url>
|
||||||
</urlset>
|
</urlset>
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user