{"id":1945,"date":"2022-10-16T17:29:28","date_gmt":"2022-10-16T15:29:28","guid":{"rendered":"https:\/\/www.fotoandnet.de\/wp\/?p=1945"},"modified":"2022-10-16T17:55:44","modified_gmt":"2022-10-16T15:55:44","slug":"paperless-ngx-update","status":"publish","type":"post","link":"http:\/\/www.fotoandnet.de\/wp\/?p=1945","title":{"rendered":"Paperless-NGX Update (lohnt sich, Paperless-NGX wird schneller!!)"},"content":{"rendered":"\n<p>Nachdem das Backup nun die notwendige Sicherheit gibt um einen Update von Paperless-NGX durchzuf\u00fchren gehen wir das doch mal an. Zu erst einmal ist sicherlich sinnvoll alle Paperless-NGX Services zu stoppen, damit nicht w\u00e4hrend des Updates Ver\u00e4nderung an den Daten durchgef\u00fchrt werden.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>user@2204lts:\/opt$ sudo systemctl stop paperless-webserver.service\nuser@2204lts:\/opt$ sudo systemctl stop paperless-scheduler.service\nuser@2204lts:\/opt$ sudo systemctl stop paperless-consumer.service\n<\/code><\/pre>\n\n\n\n<p>Dann lege ich mal unter \/opt ein \/opt\/temp an, in welches ich die aktuelle Software herunter lade und auspacke.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>user@2204lts:\/opt$ sudo mkdir \/opt\/temp\nuser@2204lts:\/opt$ cd \/opt\/temp\/\nuser@2204lts:\/opt\/temp$ sudo wget https:\/\/github.com\/paperless-ngx\/paperless-ngx\/releases\/download\/v1.9.2\/paperless-ngx-v1.9.2.tar.xz\n--2022-10-16 14:07:47--  https:\/\/github.com\/paperless-ngx\/paperless-ngx\/releases\/download\/v1.9.2\/paperless-ngx-v1.9.2.tar.xz\nResolving github.com (github.com)... 140.82.121.4\n&lt;snip&gt;\nLength: 18636512 (18M) &#091;application\/octet-stream]\nSaving to: \u2018paperless-ngx-v1.9.2.tar.xz\u2019\n\npaperless-ngx-v1.9.2.tar.xz             100%&#091;==============================================================================&gt;]  17,77M  28,7MB\/s    in 0,6s    \n\n2022-10-16 14:07:48 (28,7 MB\/s) - \u2018paperless-ngx-v1.9.2.tar.xz\u2019 saved &#091;18636512\/18636512]\n\nuser@2204lts:\/opt\/temp$ ls -la\n-rw-r--r-- 1 root root 18636512 Sep 27 17:01 paperless-ngx-v1.9.2.tar.xz\n\n<\/code><\/pre>\n\n\n\n<p>Herunter geladen ist es, dann wollen wir es mal auspacken und uns ansehen, was alles dabei ist.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>user@2204lts:\/opt\/temp$ sudo mkdir 1.9.2\nuser@2204lts:\/opt\/temp$ sudo tar -xvf paperless-ngx-v1.9.2.tar.xz -C 1.9.2\/\n&lt;snip&gt;\npaperless-ngx\/src\/paperless_tesseract\/tests\/test_checks.py\npaperless-ngx\/src\/paperless_tesseract\/tests\/__init__.py\n\nuser@2204lts:\/opt\/temp$ sudo ls -la 1.9.2\/\ndrwxr-xr-x 7 1001 docker 4096 Sep 27 17:00 paperless-ngx\nuser@2204lts:\/opt\/temp$ \n<\/code><\/pre>\n\n\n\n<p>Als erstes interessiert mich ein Vergleich von bestehender Paperless-NGX Konfig und der neuen Konfig.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>user@2204lts:\/opt\/temp\/1.9.2\/paperless-ngx$ diff paperless.conf \/opt\/paperless-ngx\/paperless.conf | more\n6c6\n&lt; #PAPERLESS_DEBUG=false\n---\n&gt; PAPERLESS_DEBUG=false\n9,10c9\n&lt; \n&lt; #PAPERLESS_REDIS=redis:\/\/localhost:6379\n---\n&gt; PAPERLESS_REDIS=redis:\/\/localhost:6379\n13,15c12,14\n&lt; #PAPERLESS_DBNAME=paperless\n&lt; #PAPERLESS_DBUSER=paperless\n&lt; #PAPERLESS_DBPASS=paperless\n---\n&gt; #PAPERLESS_DBNAME=\"paperlessngx\"\n&gt; #PAPERLESS_DBUSER=\"paperlessngx\"\n&gt; #PAPERLESS_DBPASS=\"ganz geheim\"\n19,24c18,22\n&lt; \n&lt; #PAPERLESS_CONSUMPTION_DIR=..\/consume\n&lt; #PAPERLESS_DATA_DIR=..\/data\n&lt; #PAPERLESS_TRASH_DIR=\n&lt; #PAPERLESS_MEDIA_ROOT=..\/media\n&lt; #PAPERLESS_STATICDIR=..\/static\n---\n&gt; PAPERLESS_CONSUMPTION_DIR=\/opt\/paperless\/consumption\n&gt; PAPERLESS_DATA_DIR=\/opt\/paperless\/data\n&gt; PAPERLESS_TRASH_DIR=\/opt\/paperless\/trash\n&gt; PAPERLESS_MEDIA_ROOT=\/opt\/paperless\/media-root\n&gt; PAPERLESS_STATICDIR=\/opt\/paperless-ngx\/static\n26d23\n&lt; #PAPERLESS_FILENAME_FORMAT_REMOVE_NONE=\n29,30c26\n&lt; \n&lt; #PAPERLESS_SECRET_KEY=change-me\n---\n&gt; PAPERLESS_SECRET_KEY=ganz_super_streng_geheim\n42,46c38,41\n&lt; \n&lt; #PAPERLESS_OCR_LANGUAGE=eng\n&lt; #PAPERLESS_OCR_MODE=skip\n&lt; #PAPERLESS_OCR_OUTPUT_TYPE=pdfa\n&lt; #PAPERLESS_OCR_PAGES=1\n---\n&gt; PAPERLESS_OCR_LANGUAGE=deu+eng\n&gt; PAPERLESS_OCR_MODE=skip\n&gt; PAPERLESS_OCR_OUTPUT_TYPE=pdfa\n&gt; PAPERLESS_OCR_PAGES=0\n48,51c43,46\n&lt; #PAPERLESS_OCR_CLEAN=clean\n&lt; #PAPERLESS_OCR_DESKEW=true\n&lt; #PAPERLESS_OCR_ROTATE_PAGES=true\n&lt; #PAPERLESS_OCR_ROTATE_PAGES_THRESHOLD=12.0\n---\n&gt; PAPERLESS_OCR_CLEAN=clean\n&gt; PAPERLESS_OCR_DESKEW=true\n&gt; PAPERLESS_OCR_ROTATE_PAGES=true\n&gt; PAPERLESS_OCR_ROTATE_PAGES_THRESHOLD=12.0\n53,54c48,49\n&lt; #PAPERLESS_CONVERT_MEMORY_LIMIT=0\n&lt; #PAPERLESS_CONVERT_TMPDIR=\/var\/tmp\/paperless\n---\n&gt; PAPERLESS_CONVERT_MEMORY_LIMIT=512000000\n&gt; PAPERLESS_CONVERT_TMPDIR=\/var\/tmp\n57,60c52,54\n&lt; \n&lt; #PAPERLESS_TASK_WORKERS=1\n&lt; #PAPERLESS_THREADS_PER_WORKER=1\n&lt; #PAPERLESS_TIME_ZONE=UTC\n---\n&gt; PAPERLESS_TASK_WORKERS=2\n&gt; PAPERLESS_THREADS_PER_WORKER=2\n&gt; PAPERLESS_TIME_ZONE=Europe\/Berlin\n62,67c56,62\n&lt; #PAPERLESS_CONSUMER_DELETE_DUPLICATES=false\n&lt; #PAPERLESS_CONSUMER_RECURSIVE=false\n&lt; #PAPERLESS_CONSUMER_IGNORE_PATTERNS=&#091;\".DS_STORE\/*\", \"._*\", \".stfolder\/*\", \".stversions\/*\", \".localized\/*\", \"desktop.ini\"]\n&lt; #PAPERLESS_CONSUMER_SUBDIRS_AS_TAGS=false\n&lt; #PAPERLESS_CONSUMER_ENABLE_BARCODES=false\n&lt; #PAPERLESS_CONSUMER_BARCODE_STRING=PATCHT\n---\n&gt; PAPERLESS_CONSUMER_DELETE_DUPLICATES=false\n&gt; PAPERLESS_CONSUMER_RECURSIVE=false\n&gt; PAPERLESS_CONSUMER_IGNORE_PATTERNS=&#091;\".DS_STORE\/*\", \"._*\", \".stfolder\/*\", \".stversions\/*\", \".localized\/*\", \"desktop.ini\"]\n&gt; PAPERLESS_CONSUMER_SUBDIRS_AS_TAGS=false\n&gt; PAPERLESS_CONSUMER_ENABLE_BARCODES=false\n&gt; PAPERLESS_CONSUMER_ENABLE_BARCODES=PATCHT\n&gt; PAPERLESS_OPTIMIZE_THUMBNAILS=true\n70c65\n&lt; #PAPERLESS_FILENAME_DATE_ORDER=YMD\n---\n&gt; PAPERLESS_FILENAME_DATE_ORDER=YMD\n72d66\n&lt; #PAPERLESS_NUMBER_OF_SUGGESTED_DATES=5\n78,81c72,74\n&lt; \n&lt; #PAPERLESS_TIKA_ENABLED=false\n&lt; #PAPERLESS_TIKA_ENDPOINT=http:\/\/localhost:9998\n&lt; #PAPERLESS_TIKA_GOTENBERG_ENDPOINT=http:\/\/localhost:3000\n---\n&gt; PAPERLESS_TIKA_ENABLED=true\n&gt; PAPERLESS_TIKA_ENDPOINT=http:\/\/localhost:9998\n&gt; PAPERLESS_TIKA_GOTENBERG_ENDPOINT=http:\/\/localhost:3000\n84,86c77,79\n&lt; \n&lt; #PAPERLESS_CONVERT_BINARY=\/usr\/bin\/convert\n&lt; #PAPERLESS_GS_BINARY=\/usr\/bin\/gs\n---\n&gt; PAPERLESS_CONVERT_BINARY=\/usr\/bin\/convert\n&gt; PAPERLESS_GS_BINARY=\/usr\/bin\/gs\n&gt; PAPERLESS_OPTIPNG_BINARY=\/usr\/bin\/optipng\n\n<\/code><\/pre>\n\n\n\n<p>Augenscheinlich sind keinen neuen oder ge\u00e4nderte Keys in die Konfig gekommen. Das beruhigt meine Aufregung vor einem Update doch erheblich. Na dann werden wir mal die neue Perperless.conf umbennen, damit unsere funktionierende Konfig nicht eine aufs Dach bekommt und in diesem Rutsch auch gleich die Dateien user User:paperless Group:paperless \u00e4ndern.<\/p>\n\n\n\n<p>Werfen wir noch einen Blick mit diff auf ein ggf. existierendes Delta bei folgenden Dateien:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>gunicorn.conf.py<\/li><li>scripts\/paperless-consumer.service<\/li><li>scripts\/paperless-scheduler.service<\/li><li>scripts\/paperless-webserver.service<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>gunicorn.conf.py\n---------------&gt;<\/strong>\n\nuser@2204lts:\/opt\/temp\/1.9.2\/paperless-ngx$ diff gunicorn.conf.py \/opt\/paperless-ngx\/gunicorn.conf.py \n3,8c3,4\n&lt; # See https:\/\/docs.gunicorn.org\/en\/stable\/settings.html for\n&lt; # explanations of settings\n&lt; \n&lt; bind = f'{os.getenv(\"PAPERLESS_BIND_ADDR\", \"&#091;::]\")}:{os.getenv(\"PAPERLESS_PORT\", 8000)}'\n&lt; \n&lt; workers = int(os.getenv(\"PAPERLESS_WEBSERVER_WORKERS\", 1))\n---\n&gt; bind = f'0.0.0.0:{os.getenv(\"PAPERLESS_PORT\", 8000)}'\n&gt; workers = int(os.getenv(\"PAPERLESS_WEBSERVER_WORKERS\", 2))\n11,14d6\n&lt; preload_app = True\n&lt; \n&lt; # https:\/\/docs.gunicorn.org\/en\/stable\/faq.html#blocking-os-fchmod\n&lt; worker_tmp_dir = \"\/dev\/shm\"\n35c27\n&lt;     id2name = {th.ident: th.name for th in threading.enumerate()}\n---\n&gt;     id2name = dict(&#091;(th.ident, th.name) for th in threading.enumerate()])\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>paperless-webserver.service\n--------------------------&gt;\n<\/strong>\nuser@2204lts:\/opt\/temp\/1.9.2\/paperless-ngx$ diff scripts\/paperless-webserver.service \/etc\/systemd\/system\/paperless-webserver.service\n11,12c11,12\n&lt; WorkingDirectory=\/opt\/paperless\/src\n&lt; ExecStart=\/opt\/paperless\/.local\/bin\/gunicorn -c \/opt\/paperless\/gunicorn.conf.py paperless.asgi:application\n---\n&gt; WorkingDirectory=\/opt\/paperless-ngx\/src\n&gt; ExecStart=\/opt\/paperless\/.local\/bin\/gunicorn -c \/opt\/paperless-ngx\/gunicorn.conf.py paperless.asgi:application\n\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>paperless-scheduler.service\n--------------------------&gt;<\/strong>\n\nuser@2204lts:\/opt\/temp\/1.9.2\/paperless-ngx$ diff scripts\/paperless-scheduler.service \/etc\/systemd\/system\/paperless-scheduler.service \n8c8\n&lt; WorkingDirectory=\/opt\/paperless\/src\n---\n&gt; WorkingDirectory=\/opt\/paperless-ngx\/src\n\n<\/code><\/pre>\n\n\n\n<p>Hier kann ich auch keine wesentlichen \u00c4nerungen erkennen, welche einen Betrieb von Paperless-NGX verhindern w\u00fcrden.<\/p>\n\n\n\n<p>Na dann bennen wir mal die neue paperless.conf und gunicorn.conf.py um. Ich h\u00e4nge hier immer gerne einfach die neue Versionsnummer hinten dran.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>user@2204lts:\/opt\/temp\/1.9.2\/paperless-ngx$ sudo mv gunicorn.conf.py gunicorn.conf.py.1.9.2\nuser@2204lts:\/opt\/temp\/1.9.2\/paperless-ngx$ sudo mv paperless.conf paperless.conf.1.9.2\n\nuser@2204lts:\/opt\/temp\/1.9.2\/paperless-ngx$ ls -la\n-rw-r--r-- 1 1001 docker   1349 Sep 27 17:00 gunicorn.conf.py.1.9.2\n-rw-r--r-- 1 1001 docker   2597 Sep 27 17:00 paperless.conf.1.9.2\n<\/code><\/pre>\n\n\n\n<p> <\/p>\n\n\n\n<p>Jetzt kommt der eigentliche Update. Ich \u00fcberschreibe dabei alles in dem laufenden Verzeichnis. Da mv sich bei nicht leeren Verzeichnis quer stellt und ich die sowieso updaten m\u00f6chte, l\u00f6sche ich diese einfach vorher. Das sind bei diesem Update die Verzeichnisse ..\/docker, ..\/docs, ..\/scripts, ..\/src und ..\/static. und die Files .dockerignore und .env.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>user@2204lts:\/opt\/paperless-ngx$ sudo rm -rf \/opt\/paperless-ngx\/docker\nuser@2204lts:\/opt\/paperless-ngx$ sudo rm -rf \/opt\/paperless-ngx\/docs\nuser@2204lts:\/opt\/paperless-ngx$ sudo rm -rf \/opt\/paperless-ngx\/scripts\nuser@2204lts:\/opt\/paperless-ngx$ sudo rm -rf \/opt\/paperless-ngx\/src\nuser@2204lts:\/opt\/paperless-ngx$ sudo rm -rf \/opt\/paperless-ngx\/static\nuser@2204lts:\/opt\/paperless-ngx$ sudo rm -rf \/opt\/paperless-ngx\/.env\nuser@2204lts:\/opt\/paperless-ngx$ sudo rm -rf \/opt\/paperless-ngx\/.dockerignore\n\n\nuser@2204lts:\/opt\/paperless-ngx$ sudo mv -viu \/opt\/temp\/1.9.2\/paperless-ngx\/* \/opt\/paperless-ngx\/\nrenamed '\/opt\/temp\/1.9.2\/paperless-ngx\/docker' -&gt; '\/opt\/paperless-ngx\/docker'\nrenamed '\/opt\/temp\/1.9.2\/paperless-ngx\/docs' -&gt; '\/opt\/paperless-ngx\/docs'\nrenamed '\/opt\/temp\/1.9.2\/paperless-ngx\/scripts' -&gt; '\/opt\/paperless-ngx\/scripts'\nrenamed '\/opt\/temp\/1.9.2\/paperless-ngx\/src' -&gt; '\/opt\/paperless-ngx\/src'\nrenamed '\/opt\/temp\/1.9.2\/paperless-ngx\/static' -&gt; '\/opt\/paperless-ngx\/static'\n\n\nuser@2204lts:\/opt\/paperless-ngx$ sudo chown paperless:paperless -Rfv \/opt\/paperless-ngx\/*\n\nuser@2204lts:\/opt\/paperless-ngx$ ls -la\ntotal 272\ndrwxr-xr-x 8      1001 paperless   4096 Okt 16 14:59 .\ndrwxrwxrwx 8 root      root        4096 Okt 16 14:07 ..\ndrwxr-xr-x 3 paperless paperless   4096 Apr 25 18:57 data\ndrwxr-xr-x 3 paperless paperless   4096 Okt 16 14:51 docker\n-rw-r--r-- 1 paperless paperless   7919 Sep 27 17:00 Dockerfile\ndrwxr-xr-x 5 paperless paperless   4096 Sep 27 17:00 docs\n-rw-r--r-- 1 paperless paperless   1119 Apr 25 18:57 gunicorn.conf.py\n-rw-r--r-- 1 paperless paperless   1349 Sep 27 17:00 gunicorn.conf.py.1.9.2\n-rw-r--r-- 1 paperless paperless  35142 Sep 27 17:00 LICENSE\n-rw-r--r-- 1 paperless paperless   2742 Sep 19 18:35 paperless.conf\n-rw-r--r-- 1 paperless paperless   2597 Sep 27 17:00 paperless.conf.1.9.2\n-rw-r--r-- 1 paperless paperless   2743 Sep 19 18:31 paperless.conf.bak\n-rw-r--r-- 1 paperless paperless   2598 Mai  8 09:08 paperless.conf.org\n-rw-r--r-- 1 paperless paperless   1860 Sep 27 17:00 Pipfile\n-rw-r--r-- 1 paperless paperless 155459 Sep 27 17:00 Pipfile.lock\n-rw-r--r-- 1 paperless paperless   8812 Sep 27 17:00 README.md\n-rw-r--r-- 1 paperless paperless   3918 Sep 27 17:00 requirements.txt\ndrwxr-xr-x 2 paperless paperless   4096 Sep 27 17:00 scripts\ndrwxr-xr-x 9 paperless paperless   4096 Sep 27 17:00 src\ndrwxr-xr-x 7 paperless paperless   4096 Sep 27 17:00 static\n\n<\/code><\/pre>\n\n\n\n<p>Damit sind die Files da, wo sie liegen sollen. Als n\u00e4chstes sind die neuen Requierments zu installieren.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>user@2204lts:\/opt\/paperless-ngx$ cd \/opt\/paperless-ngx\/\nuser@2204lts:\/opt\/paperless-ngx$ sudo -Hu paperless pip3 install -r requirements.txt\n&lt;snip&gt;\n\nuser@2204lts:\/opt\/paperless-ngx$ cd src\/\nuser@2204lts:\/opt\/paperless-ngx\/src$ sudo -Hu paperless python3 manage.py migrate\nOperations to perform:\n  Apply all migrations: admin, auth, authtoken, contenttypes, django_q, documents, paperless_mail, sessions\nRunning migrations:\n  Applying documents.1019_uisettings... OK\n  Applying documents.1019_storagepath_document_storage_path... OK\n  Applying documents.1020_merge_20220518_1839... OK\n  Applying documents.1021_webp_thumbnail_conversion...&#091;2022-10-16 17:15:52,689] &#091;INFO] &#091;paperless.migrations] \n&lt;snip&gt;\n&#091;2022-10-16 17:15:53,375] &#091;INFO] &#091;paperless.migrations] Conversion to WebP completed, replaced 0000595.png with 0000595.webp\n&#091;2022-10-16 17:15:53,395] &#091;INFO] &#091;paperless.migrations] Conversion to WebP completed, replaced 0000583.png with 0000583.webp\n&#091;2022-10-16 17:15:53,400] &#091;INFO] &#091;paperless.migrations] Conversion completed in 0.717s\n OK\n  Applying documents.1022_paperlesstask... OK\n  Applying documents.1023_add_comments... OK\n  Applying documents.1024_document_original_filename... OK\n  Applying documents.1025_alter_savedviewfilterrule_rule_type... OK\n  Applying paperless_mail.0015_alter_mailrule_action... OK\n<\/code><\/pre>\n\n\n\n<p>Das scheint alles sauber gelaufen zu sein. Dann gebe ich dem Server mal eine auf die Nuss und gucke, ob die Website wieder da ist.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>user@2204lts:\/opt\/paperless-ngx\/src$ sudo reboot\nConnection to 192.168.2.158 closed by remote host.\nConnection to 192.168.2.158 closed.\n<\/code><\/pre>\n\n\n\n<p>Und nach dem Reload&#8230; trommel wirbel&#8230;<\/p>\n\n\n\n<p>Der Webserver ist da und ganz klein unten links in der Ecke steht die Version v1.9.2. Das sieht nach einem g\u00fcltigen Versuch aus und ein kleiner Test, ob er auch wieder Dokumente an nimmt &#8211;&gt; l\u00e4uft.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"549\" src=\"http:\/\/www.fotoandnet.de\/wp\/wp-content\/uploads\/2022\/10\/Paperless-NGX_v1.9.2-1024x549.jpg\" alt=\"\" class=\"wp-image-1950\" srcset=\"http:\/\/www.fotoandnet.de\/wp\/wp-content\/uploads\/2022\/10\/Paperless-NGX_v1.9.2-1024x549.jpg 1024w, http:\/\/www.fotoandnet.de\/wp\/wp-content\/uploads\/2022\/10\/Paperless-NGX_v1.9.2-300x161.jpg 300w, http:\/\/www.fotoandnet.de\/wp\/wp-content\/uploads\/2022\/10\/Paperless-NGX_v1.9.2-768x412.jpg 768w, http:\/\/www.fotoandnet.de\/wp\/wp-content\/uploads\/2022\/10\/Paperless-NGX_v1.9.2.jpg 1284w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Paperless-NGX v.1.9.2<\/figcaption><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Nachdem das Backup nun die notwendige Sicherheit gibt um einen Update von Paperless-NGX durchzuf\u00fchren gehen wir das doch mal an. Zu erst einmal ist sicherlich sinnvoll alle Paperless-NGX Services zu stoppen, damit nicht w\u00e4hrend&#46;&#46;&#46;<\/p>\n","protected":false},"author":2,"featured_media":1959,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[87,81,95,79,96],"class_list":["post-1945","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux","tag-document-management-system","tag-paperless-ngx","tag-softwareupdate","tag-ubuntu-server","tag-version1-9-2"],"_links":{"self":[{"href":"http:\/\/www.fotoandnet.de\/wp\/index.php?rest_route=\/wp\/v2\/posts\/1945","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.fotoandnet.de\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.fotoandnet.de\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.fotoandnet.de\/wp\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.fotoandnet.de\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1945"}],"version-history":[{"count":12,"href":"http:\/\/www.fotoandnet.de\/wp\/index.php?rest_route=\/wp\/v2\/posts\/1945\/revisions"}],"predecessor-version":[{"id":1961,"href":"http:\/\/www.fotoandnet.de\/wp\/index.php?rest_route=\/wp\/v2\/posts\/1945\/revisions\/1961"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.fotoandnet.de\/wp\/index.php?rest_route=\/wp\/v2\/media\/1959"}],"wp:attachment":[{"href":"http:\/\/www.fotoandnet.de\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1945"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.fotoandnet.de\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1945"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.fotoandnet.de\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1945"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}