captcha_incorrect
@captcha_incorrect@lemmy.world
- Comment on Self-hosted keypass fork recommendation 1 week ago:
I use KeePassXC + Strongbox (iOS) and sync it with Syncthing. I have a server always running so if I save a change on my computer, it will always be synced to the server. I use an iPhone 13 so I have to use möbius sync and it is not perfect, I have to manually open the app to make sure it syncs (something iOS background usage something). I also have an old Android phone that also syncs my kbdx file. You could have a RPI Zero (or any other kind computer) as a cheep backup solution just for Syncthing.
- Comment on Selfhosted & AI - Part 2: The Results 1 week ago:
We need a tag for when the AI use is not known.
Here is a great project: github.com/sapristi/mmuxer
Mail Muxer is a Python tool that will monitor your Inbox, and filter incomming emails according to the given configuration.
Is AI used in any shape or form to develop this? No clue, I am not affiliated, but I would really like to post a promo about it and would need to tag it correctly.
- Comment on Selfhosted & AI - Part 2: The Results 1 week ago:
I asked the same question it should be tagged as [AIP]+[hint] under these rules.
hint Human acts on the task and the AI surfaces suggestions passively.
- Comment on Selfhosted & AI 1 week ago:
Makes sense, thanks for taking the time to explain. <3
- Comment on Is there room for Windows selfhosters? 1 week ago:
You complained about docker putting everything into a bag and I tried to argue that this approach was better because there is no need to consider library versions conflicting between apps.
- Comment on Selfhosted & AI 1 week ago:
any use would mean a tag
So when I write code, I regularly ask an LLM how to do things. A few examples from my history is how I could overlap rows when generating PDF files (have a library for this), how I could assign an empty Char and to create a singleton class. A LLM never changes any of my files, I use it as super-search-engine.
Would that constitute an AI tag?
- Comment on Selfhosted & AI 2 weeks ago:
Where should the line be drawn for what is AI coded vs AS assisted (in some manner) and thus tagged?
XerahS is very openly coded with AI and should be tagged. But what about the recent debate about the use of LLM in cURL?
- Comment on Is there room for Windows selfhosters? 3 weeks ago:
And that is perfect. Instead of setting up one VM for each service and manually updating all dependencies, I’d much rather use that very handy bag with everything in it.
- Comment on Is there room for Windows selfhosters? 3 weeks ago:
I feel with you, but at the same time I remember trying to setup Apache Guacamole and failing miserably. Doing it now with docker would remove everything that made me fail 10 years ago.
- Comment on How To Parse JSON Data To A Human Readable Format 4 weeks ago:
Glad to hear that you got it working! The hard part for me was to figure out how to transform a JSON string into an array of n8n objects. I had already done that before so now I just copy that node whenever I need something like again.
I’m doing a bit of tweaking
I figured you would have. But that is half the fun. :-)
- Comment on Rule 3 - Updated 4 weeks ago:
were pretty eager with that trmove button for that.
Yeah, I only noticed that after it had been pointed out recently. I hope it didn’t scare anyone away.
- Comment on How To Parse JSON Data To A Human Readable Format 4 weeks ago:
Sharing a workflow requires a paid plan but could should be able to paste this in the editor to get the same effect.
I made two different sample flows, on that call the api and responds with directly with the response data (transformed). The other workflow is to same the data in a data table, and call the weather api on a schedule. You could even use ntfy and send notifications on a schedule if it will rain within an hour.
Edit the nodes to suite your need (URL, content of response etc).
n8n sample workflow (copy and paste in n8n's editor)
json { “nodes”: [ { “parameters”: { “url”: “https://opendata-download-metfcst.smhi.se/api/category/snow1g/version/1/geotype/point/lon/16.158/lat/58.5812/data.json”, “options”: {} }, “type”: “n8n-nodes-base.httpRequest”, “typeVersion”: 4.4, “position”: [ 656, 336 ], “id”: “d47a17c9-9bc7-448c-841a-f3b2d787b2cb”, “name”: “Sample weather JSON data” }, { “parameters”: { “jsCode”: “let output = [];\n\nfor (const item of $input.first().json.timeSeries) {\n output.push({\n Time: item.time,\n \“Current temperature\”: item.data.air_temperature + ’ °C’\n // Add more as needed\n });\n}\n\nreturn output;\n\n” }, “type”: “n8n-nodes-base.code”, “typeVersion”: 2, “position”: [ 880, 240 ], “id”: “cf4f11a6-0ecc-4e96-afcb-a7903113da19”, “name”: “Convert json to array” }, { “parameters”: { “mode”: “raw”, “jsonOutput”: “={\n \“Time\”: {{ $json.timeSeries[0].time }},\n \“Current temperature\”: {{ $json.timeSeries[0].data.air_temperature }},\n}\n”, “options”: {} }, “type”: “n8n-nodes-base.set”, “typeVersion”: 3.4, “position”: [ 880, 432 ], “id”: “2f3765ba-6ee5-44b7-ac45-c5a407ed43e9”, “name”: “Manual mapping of one item”, “disabled”: true }, { “parameters”: { “options”: {} }, “type”: “n8n-nodes-base.respondToWebhook”, “typeVersion”: 1.5, “position”: [ 1104, 240 ], “id”: “badd76a3-2920-4592-baa6-5202b4badba0”, “name”: “Respond to Webhook” }, { “parameters”: { “operation”: “upsert”, “dataTableId”: { “__rl”: true, “mode”: “list”, “value”: “” }, “columns”: { “mappingMode”: “defineBelow”, “value”: {}, “matchingColumns”: [], “schema”: [], “attemptToConvertTypes”: false, “convertFieldsToString”: false }, “options”: {} }, “type”: “n8n-nodes-base.dataTable”, “typeVersion”: 1.1, “position”: [ 1104, 16 ], “id”: “c76d9dfa-9ec1-421f-a96b-d1a65efb0dd7”, “name”: “insert (or update if exists) table with data” }, { “parameters”: { “content”: “Create the table first, then edit and select how to map the fields\n\n”, “height”: 224, “width”: 320 }, “type”: “n8n-nodes-base.stickyNote”, “position”: [ 992, -48 ], “typeVersion”: 1, “id”: “51347b11-fcb8-49db-bd17-405ec8719ec0”, “name”: “Sticky Note” }, { “parameters”: { “jsCode”: “let output = [];\n\nfor (const item of $input.first().json.timeSeries) {\n output.push({\n Time: item.time,\n \“Current temperature\”: item.data.air_temperature + ’ °C’\n // Add more as needed\n });\n}\n\nreturn output;\n\n” }, “type”: “n8n-nodes-base.code”, “typeVersion”: 2, “position”: [ 880, 16 ], “id”: “3967c4c5-5443-40d2-b1fe-830aa9327118”, “name”: “Convert json to array1” }, { “parameters”: { “url”: “https://opendata-download-metfcst.smhi.se/api/category/snow1g/version/1/geotype/point/lon/16.158/lat/58.5812/data.json”, “options”: {} }, “type”: “n8n-nodes-base.httpRequest”, “typeVersion”: 4.4, “position”: [ 656, 16 ], “id”: “f0043f80-c940-43cf-a5ef-2f7fe6dcc6a7”, “name”: “Sample weather JSON data1” }, { “parameters”: { “path”: “1572b231-edc5-4516-935c-f205b737c5d2”, “responseMode”: “responseNode”, “options”: {} }, “type”: “n8n-nodes-base.webhook”, “typeVersion”: 2.1, “position”: [ 432, 336 ], “id”: “30953c4e-7627-4646-8b8d-ca46cc06c841”, “name”: “Webhook - Respond after API call”, “webhookId”: “1572b231-edc5-4516-935c-f205b737c5d2” }, { “parameters”: { “rule”: { “interval”: [ { “field”: “minutes” } ] } }, “type”: “n8n-nodes-base.scheduleTrigger”, “typeVersion”: 1.3, “position”: [ 448, 16 ], “id”: “e242dea7-dc3c-4c0a-9630-786bf2a39b8a”, “name”: “Schedule to get weather data” }, { “parameters”: { “path”: “1572b231-edc5-4516-935c-f205b737c5d2”, “responseMode”: “responseNode”, “options”: {} }, “type”: “n8n-nodes-base.webhook”, “typeVersion”: 2.1, “position”: [ 448, -240 ], “id”: “1c1ac8d1-5f64-4bab-a3ac-20f223b1411e”, “name”: “Webhook - respond with table data”, “webhookId”: “1572b231-edc5-4516-935c-f205b737c5d2” }, { “parameters”: { “operation”: “get”, “dataTableId”: { “__rl”: true, “mode”: “list”, “value”: “” } }, “type”: “n8n-nodes-base.dataTable”, “typeVersion”: 1.1, “position”: [ 656, -240 ], “id”: “7433815b-229c-4ad8-88ce-2bcff688ece5”, “name”: “Get row(s)” }, { “parameters”: { “options”: {} }, “type”: “n8n-nodes-base.set”, “typeVersion”: 3.4, “position”: [ 864, -240 ], “id”: “76cd6bfe-da95-41c0-a3ee-812956eab79f”, “name”: “Edit Fields” }, { “parameters”: { “options”: {} }, “type”: “n8n-nodes-base.respondToWebhook”, “typeVersion”: 1.5, “position”: [ 1072, -240 ], “id”: “3c83ebc3-2c09-4d80-8278-e325237ae0e2”, “name”: “Respond to Webhook1” }, { “parameters”: { “content”: “No code behind these nodes, only a skeleton sample for the workflow could look like”, “height”: 208, “width”: 944 }, “type”: “n8n-nodes-base.stickyNote”, “position”: [ 384, -304 ], “typeVersion”: 1, “id”: “db35642a-04dd-427b-9a21-d4ad64dd5522”, “name”: “Sticky Note1” }, { “parameters”: { “content”: “## Via data tabel\n”, “height”: 592, “width”: 1088, “color”: 3 }, “type”: “n8n-nodes-base.stickyNote”, “position”: [ 288, -384 ], “typeVersion”: 1, “id”: “877a2308-c70f-4b9e-8ef7-5dea94a812b8”, “name”: “Sticky Note2” }, { “parameters”: { “content”: “## Direct response from remote API”, “height”: 400, “width”: 1088, “color”: 5 }, “type”: “n8n-nodes-base.stickyNote”, “position”: [ 288, 224 ], “typeVersion”: 1, “id”: “d06d7c02-a8eb-494b-8d10-142fb2c04037”, “name”: “Sticky Note3” } ], “connections”: { “Sample weather JSON data”: { “main”: [ [ { “node”: “Convert json to array”, “type”: “main”, “index”: 0 }, { “node”: “Manual mapping of one item”, “type”: “main”, “index”: 0 } ] ] }, “Convert json to array”: { “main”: [ [ { “node”: “Respond to Webhook”, “type”: “main”, “index”: 0 } ] ] }, “Convert json to array1”: { “main”: [ [ { “node”: “insert (or update if exists) table with data”, “type”: “main”, “index”: 0 } ] ] }, “Sample weather JSON data1”: { “main”: [ [ { “node”: “Convert json to array1”, “type”: “main”, “index”: 0 } ] ] }, “Webhook - Respond after API call”: { “main”: [ [ { “node”: “Sample weather JSON data”, “type”: “main”, “index”: 0 } ] ] }, “Schedule to get weather data”: { “main”: [ [ { “node”: “Sample weather JSON data1”, “type”: “main”, “index”: 0 } ] ] }, “Webhook - respond with table data”: { “main”: [ [ { “node”: “Get row(s)”, “type”: “main”, “index”: 0 } ] ] }, “Get row(s)”: { “main”: [ [ { “node”: “Edit Fields”, “type”: “main”, “index”: 0 } ] ] }, “Edit Fields”: { “main”: [ [ { “node”: “Respond to Webhook1”, “type”: “main”, “index”: 0 } ] ] } }, “pinData”: {}, “meta”: { “instanceId”: “139fc1c0283616d9fae3813879a161cf8e8e0992eea7a9e87dc980c7d4ed97ec” } } - Comment on How To Parse JSON Data To A Human Readable Format 4 weeks ago:
Since you are using n8n, pull the data on a schedule and save it in a data table. Then create a webhook to serve the content as you want it. N8n can transform the JSON data, I can provide a sample tomorrow.
- Comment on Caddy touble in Docker 4 weeks ago:
Have you tried running it but not exposing any ports using docker compose?EDIT: Saw that it worked with 4443:443. - Comment on Rule 3 - Updated 4 weeks ago:
In addition, rule 7 (low effort posts) is deleted as everyone seems to agree its handled just fine with votes.
Completely agree with this one. I like to browse new and I’d rather keep the occasional low effort post than delete them. There are relatively few posts at it is.
- Comment on Help with MariaDB root login 5 weeks ago:
If you copy the DB file to your computer, you should be able to inspect them with some kind of viewer. Perhaps you can figure out the username/password that way?
- Comment on Help with MariaDB root login 1 month ago:
Are you trying with the correct db user? Try connecting to image with the root user for MariaDB and create a new user with permissions. I’ve had to do similar things with Postgres, connecting with the user psql with success.
- Comment on these people are the worst 2 months ago:
¯\_(ツ)_¯
- Comment on What us the best way to add remote access to my servers? 4 months ago:
Do you want to expose port 80/443 and set up a reverse proxy or do you want to use a VPN tunnel? You could just use SSH to port 80 and 443 like so:
ssh -L 80:<local-server-ip>:80 -L 443:<local-server-ip>:443 <username>@<domain>I expose port 80/443 and use Caddy as a reverse proxy together with Authelia to protect anything that I deem needs an extra layer of security. I followed this guide: caddy.community/t/…/20465
Once setup, it is easy to remove or add a backend to Caddy and Authelia. This way does mean that you sometimes need to log in twice, but that is a small price to pay if your backend app does not support SSO (like n8n community edition).