-
Posts
31 -
Joined
-
Last visited
Content Type
Profiles
Forums
Downloads
Store
Gallery
Bug Reports
Documentation
Landing
Posts posted by klogg
-
-
15 minutes ago, SpencerJ said:
Thank you. A lot of time, thought and money went into the decision.
It’s obvious that this was treated with care and respect for the existing users and the business.
Anyone feeling otherwise should remember how Reddit handled their changes. Or Dropbox. Or skiff. Or or or.
There are a lot of feelings going around, and people care a lot because unraid is a big part of all our lives. Time will demonstrate that this was well handled.
- 1
-
Great to see a more sustainable model coming out and a long life ahead for unraid. New terms are more than fair to the existing community and better than could reasonably excepted. Kudos, thank you for a great product and being an even better custodian.
🏆🏆
- 5
- 2
-
On 12/1/2022 at 9:00 AM, nau said:
after update my unifi controller stopped worked due Jawa.
Changed both MEM_LIMIT: and MEM_STARTUP: to default and container started sucessfully.
Same. Looking at the logs I saw:
Invalid maximum heap size: -Xmx2048MM Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit.
Notice the doubled up "MM" at the end of the heap size. Changing my environment variable to not specify "M" let it fire right up again.
environment - MEM_LIMIT=2048M
needs to become
environment - MEM_LIMIT=2048
- 1
-
On 11/19/2018 at 4:26 PM, John_M said:
Settings -> Network Settings Then scroll to near the bottom where you'll find Network Rules. Set your preferred interface as eth0 by selecting it's MAC address. The web GUI runs on eth0.
4 years later, still the answer I needed. This still works in 2022 and let me effectively ignore my onboard NIC that cannot be disabled and pipe everything through a PCIe 10GBE add-on card. Thank you @John_M
-
Reformatted through UD this morning, rebooted, no more error. Thanks @JorgeB
Mar 23 12:24:21 Marvin emhttpd: Mounting disks... Mar 23 12:24:21 Marvin emhttpd: shcmd (30): /sbin/btrfs device scan Mar 23 12:24:21 Marvin root: Scanning for Btrfs filesystems Mar 23 12:24:21 Marvin emhttpd: shcmd (31): mkdir -p /mnt/disk1 Mar 23 12:24:21 Marvin emhttpd: shcmd (32): mount -t xfs -o noatime,nouuid /dev/md1 /mnt/disk1 Mar 23 12:24:21 Marvin kernel: SGI XFS with ACLs, security attributes, no debug enabled Mar 23 12:24:21 Marvin kernel: XFS (md1): Mounting V5 Filesystem Mar 23 12:24:21 Marvin kernel: XFS (md1): Ending clean mount Mar 23 12:24:21 Marvin kernel: xfs filesystem being mounted at /mnt/disk1 supports timestamps until 2038 (0x7fffffff) Mar 23 12:24:21 Marvin emhttpd: shcmd (33): xfs_growfs /mnt/disk1 Mar 23 12:24:21 Marvin root: meta-data=/dev/md1 isize=512 agcount=10, agsize=268435455 blks Mar 23 12:24:21 Marvin root: = sectsz=512 attr=2, projid32bit=1 Mar 23 12:24:21 Marvin root: = crc=1 finobt=1, sparse=1, rmapbt=0 Mar 23 12:24:21 Marvin root: = reflink=1 bigtime=0 inobtcount=0 Mar 23 12:24:21 Marvin root: data = bsize=4096 blocks=2441609203, imaxpct=5 Mar 23 12:24:21 Marvin root: = sunit=0 swidth=0 blks Mar 23 12:24:21 Marvin root: naming =version 2 bsize=4096 ascii-ci=0, ftype=1 Mar 23 12:24:21 Marvin root: log =internal log bsize=4096 blocks=521728, version=2 Mar 23 12:24:21 Marvin root: = sectsz=512 sunit=0 blks, lazy-count=1 Mar 23 12:24:21 Marvin root: realtime =none extsz=4096 blocks=0, rtextents=0 Mar 23 12:24:21 Marvin emhttpd: shcmd (34): mkdir -p /mnt/disk2 Mar 23 12:24:21 Marvin emhttpd: shcmd (35): mount -t xfs -o noatime,nouuid /dev/md2 /mnt/disk2 Mar 23 12:24:21 Marvin kernel: XFS (md2): Mounting V5 Filesystem Mar 23 12:24:22 Marvin kernel: XFS (md2): Ending clean mount Mar 23 12:24:22 Marvin kernel: xfs filesystem being mounted at /mnt/disk2 supports timestamps until 2038 (0x7fffffff) Mar 23 12:24:22 Marvin emhttpd: shcmd (36): xfs_growfs /mnt/disk2 Mar 23 12:24:22 Marvin root: meta-data=/dev/md2 isize=512 agcount=10, agsize=268435455 blks Mar 23 12:24:22 Marvin root: = sectsz=4096 attr=2, projid32bit=1 Mar 23 12:24:22 Marvin root: = crc=1 finobt=1, sparse=1, rmapbt=0 Mar 23 12:24:22 Marvin root: = reflink=1 bigtime=0 inobtcount=0 Mar 23 12:24:22 Marvin root: data = bsize=4096 blocks=2441609203, imaxpct=5 Mar 23 12:24:22 Marvin root: = sunit=0 swidth=0 blks Mar 23 12:24:22 Marvin root: naming =version 2 bsize=4096 ascii-ci=0, ftype=1 Mar 23 12:24:22 Marvin root: log =internal log bsize=4096 blocks=521728, version=2 Mar 23 12:24:22 Marvin root: = sectsz=4096 sunit=1 blks, lazy-count=1 Mar 23 12:24:22 Marvin root: realtime =none extsz=4096 blocks=0, rtextents=0 Mar 23 12:24:22 Marvin emhttpd: shcmd (37): mkdir -p /mnt/disk3 Mar 23 12:24:22 Marvin emhttpd: shcmd (38): mount -t xfs -o noatime,nouuid /dev/md3 /mnt/disk3 Mar 23 12:24:22 Marvin kernel: XFS (md3): Mounting V5 Filesystem Mar 23 12:24:22 Marvin kernel: XFS (md3): Ending clean mount Mar 23 12:24:22 Marvin kernel: xfs filesystem being mounted at /mnt/disk3 supports timestamps until 2038 (0x7fffffff) Mar 23 12:24:22 Marvin emhttpd: shcmd (39): xfs_growfs /mnt/disk3 Mar 23 12:24:22 Marvin root: meta-data=/dev/md3 isize=512 agcount=8, agsize=268435455 blks Mar 23 12:24:22 Marvin root: = sectsz=512 attr=2, projid32bit=1 Mar 23 12:24:22 Marvin root: = crc=1 finobt=1, sparse=0, rmapbt=0 Mar 23 12:24:22 Marvin root: = reflink=0 bigtime=0 inobtcount=0 Mar 23 12:24:22 Marvin root: data = bsize=4096 blocks=1953506633, imaxpct=5 Mar 23 12:24:22 Marvin root: = sunit=0 swidth=0 blks Mar 23 12:24:22 Marvin root: naming =version 2 bsize=4096 ascii-ci=0, ftype=1 Mar 23 12:24:22 Marvin root: log =internal log bsize=4096 blocks=521728, version=2 Mar 23 12:24:22 Marvin root: = sectsz=512 sunit=0 blks, lazy-count=1 Mar 23 12:24:22 Marvin root: realtime =none extsz=4096 blocks=0, rtextents=0 Mar 23 12:24:22 Marvin emhttpd: shcmd (40): mkdir -p /mnt/disk4 Mar 23 12:24:22 Marvin emhttpd: shcmd (41): mount -t xfs -o noatime,nouuid /dev/md4 /mnt/disk4 Mar 23 12:24:22 Marvin kernel: XFS (md4): Mounting V5 Filesystem Mar 23 12:24:22 Marvin kernel: XFS (md4): Ending clean mount Mar 23 12:24:22 Marvin kernel: xfs filesystem being mounted at /mnt/disk4 supports timestamps until 2038 (0x7fffffff) Mar 23 12:24:22 Marvin emhttpd: shcmd (42): xfs_growfs /mnt/disk4 Mar 23 12:24:22 Marvin root: meta-data=/dev/md4 isize=512 agcount=6, agsize=268435455 blks Mar 23 12:24:22 Marvin root: = sectsz=512 attr=2, projid32bit=1 Mar 23 12:24:22 Marvin root: = crc=1 finobt=1, sparse=1, rmapbt=0 Mar 23 12:24:22 Marvin root: = reflink=0 bigtime=0 inobtcount=0 Mar 23 12:24:22 Marvin root: data = bsize=4096 blocks=1465130633, imaxpct=5 Mar 23 12:24:22 Marvin root: = sunit=0 swidth=0 blks Mar 23 12:24:22 Marvin root: naming =version 2 bsize=4096 ascii-ci=0, ftype=1 Mar 23 12:24:22 Marvin root: log =internal log bsize=4096 blocks=521728, version=2 Mar 23 12:24:22 Marvin root: = sectsz=512 sunit=0 blks, lazy-count=1 Mar 23 12:24:22 Marvin root: realtime =none extsz=4096 blocks=0, rtextents=0 Mar 23 12:24:22 Marvin emhttpd: shcmd (43): mkdir -p /mnt/cache
-
2 hours ago, JorgeB said:
Kind of expected that...
Same, but it is good to have dreams. 🙂
Thanks for your help on this.
-
I can confirm the warning is still appearing in rc4 as well. I added and formatted a 10TB drive (/dev/md2) while running rc3. Updated to rc4, this is from my logs after a reboot this morning.
Mar 21 08:22:22 Marvin emhttpd: Mounting disks... Mar 21 08:22:22 Marvin emhttpd: shcmd (30): /sbin/btrfs device scan Mar 21 08:22:23 Marvin root: Scanning for Btrfs filesystems Mar 21 08:22:23 Marvin emhttpd: shcmd (31): mkdir -p /mnt/disk1 Mar 21 08:22:23 Marvin emhttpd: shcmd (32): mount -t xfs -o noatime,nouuid /dev/md1 /mnt/disk1 Mar 21 08:22:23 Marvin kernel: SGI XFS with ACLs, security attributes, no debug enabled Mar 21 08:22:23 Marvin kernel: XFS (md1): Mounting V5 Filesystem Mar 21 08:22:23 Marvin kernel: XFS (md1): Ending clean mount Mar 21 08:22:23 Marvin kernel: xfs filesystem being mounted at /mnt/disk1 supports timestamps until 2038 (0x7fffffff) Mar 21 08:22:23 Marvin emhttpd: shcmd (33): xfs_growfs /mnt/disk1 Mar 21 08:22:23 Marvin root: meta-data=/dev/md1 isize=512 agcount=10, agsize=268435455 blks Mar 21 08:22:23 Marvin root: = sectsz=512 attr=2, projid32bit=1 Mar 21 08:22:23 Marvin root: = crc=1 finobt=1, sparse=1, rmapbt=0 Mar 21 08:22:23 Marvin root: = reflink=1 bigtime=0 inobtcount=0 Mar 21 08:22:23 Marvin root: data = bsize=4096 blocks=2441609203, imaxpct=5 Mar 21 08:22:23 Marvin root: = sunit=0 swidth=0 blks Mar 21 08:22:23 Marvin root: naming =version 2 bsize=4096 ascii-ci=0, ftype=1 Mar 21 08:22:23 Marvin root: log =internal log bsize=4096 blocks=521728, version=2 Mar 21 08:22:23 Marvin root: = sectsz=512 sunit=0 blks, lazy-count=1 Mar 21 08:22:23 Marvin root: realtime =none extsz=4096 blocks=0, rtextents=0 Mar 21 08:22:23 Marvin emhttpd: shcmd (34): mkdir -p /mnt/disk2 Mar 21 08:22:23 Marvin emhttpd: shcmd (35): mount -t xfs -o noatime,nouuid /dev/md2 /mnt/disk2 Mar 21 08:22:23 Marvin kernel: XFS (md2): Mounting V5 Filesystem Mar 21 08:22:24 Marvin kernel: XFS (md2): Ending clean mount Mar 21 08:22:24 Marvin kernel: xfs filesystem being mounted at /mnt/disk2 supports timestamps until 2038 (0x7fffffff) Mar 21 08:22:24 Marvin emhttpd: shcmd (36): xfs_growfs /mnt/disk2 Mar 21 08:22:24 Marvin kernel: XFS (md2): EXPERIMENTAL online shrink feature in use. Use at your own risk! Mar 21 08:22:24 Marvin root: xfs_growfs: XFS_IOC_FSGROWFSDATA xfsctl failed: No space left on device Mar 21 08:22:24 Marvin root: meta-data=/dev/md2 isize=512 agcount=32, agsize=76300287 blks Mar 21 08:22:24 Marvin root: = sectsz=512 attr=2, projid32bit=1 Mar 21 08:22:24 Marvin root: = crc=1 finobt=1, sparse=1, rmapbt=0 Mar 21 08:22:24 Marvin root: = reflink=1 bigtime=0 inobtcount=0 Mar 21 08:22:24 Marvin root: data = bsize=4096 blocks=2441609184, imaxpct=5 Mar 21 08:22:24 Marvin root: = sunit=1 swidth=32 blks Mar 21 08:22:24 Marvin root: naming =version 2 bsize=4096 ascii-ci=0, ftype=1 Mar 21 08:22:24 Marvin root: log =internal log bsize=4096 blocks=521728, version=2 Mar 21 08:22:24 Marvin root: = sectsz=512 sunit=1 blks, lazy-count=1 Mar 21 08:22:24 Marvin root: realtime =none extsz=4096 blocks=0, rtextents=0 Mar 21 08:22:24 Marvin emhttpd: shcmd (36): exit status: 1 Mar 21 08:22:24 Marvin emhttpd: shcmd (37): mkdir -p /mnt/disk3 Mar 21 08:22:24 Marvin emhttpd: shcmd (38): mount -t xfs -o noatime,nouuid /dev/md3 /mnt/disk3 Mar 21 08:22:24 Marvin kernel: XFS (md3): Mounting V5 Filesystem Mar 21 08:22:24 Marvin kernel: XFS (md3): Ending clean mount Mar 21 08:22:24 Marvin kernel: xfs filesystem being mounted at /mnt/disk3 supports timestamps until 2038 (0x7fffffff) Mar 21 08:22:24 Marvin emhttpd: shcmd (39): xfs_growfs /mnt/disk3 Mar 21 08:22:24 Marvin root: meta-data=/dev/md3 isize=512 agcount=8, agsize=268435455 blks Mar 21 08:22:24 Marvin root: = sectsz=512 attr=2, projid32bit=1 Mar 21 08:22:24 Marvin root: = crc=1 finobt=1, sparse=0, rmapbt=0 Mar 21 08:22:24 Marvin root: = reflink=0 bigtime=0 inobtcount=0 Mar 21 08:22:24 Marvin root: data = bsize=4096 blocks=1953506633, imaxpct=5 Mar 21 08:22:24 Marvin root: = sunit=0 swidth=0 blks Mar 21 08:22:24 Marvin root: naming =version 2 bsize=4096 ascii-ci=0, ftype=1 Mar 21 08:22:24 Marvin root: log =internal log bsize=4096 blocks=521728, version=2 Mar 21 08:22:24 Marvin root: = sectsz=512 sunit=0 blks, lazy-count=1 Mar 21 08:22:24 Marvin root: realtime =none extsz=4096 blocks=0, rtextents=0 Mar 21 08:22:24 Marvin emhttpd: shcmd (40): mkdir -p /mnt/disk4 Mar 21 08:22:24 Marvin emhttpd: shcmd (41): mount -t xfs -o noatime,nouuid /dev/md4 /mnt/disk4 Mar 21 08:22:24 Marvin kernel: XFS (md4): Mounting V5 Filesystem Mar 21 08:22:24 Marvin kernel: XFS (md4): Ending clean mount Mar 21 08:22:24 Marvin kernel: xfs filesystem being mounted at /mnt/disk4 supports timestamps until 2038 (0x7fffffff) Mar 21 08:22:24 Marvin emhttpd: shcmd (42): xfs_growfs /mnt/disk4 Mar 21 08:22:24 Marvin root: meta-data=/dev/md4 isize=512 agcount=6, agsize=268435455 blks Mar 21 08:22:24 Marvin root: = sectsz=512 attr=2, projid32bit=1 Mar 21 08:22:24 Marvin root: = crc=1 finobt=1, sparse=1, rmapbt=0 Mar 21 08:22:24 Marvin root: = reflink=0 bigtime=0 inobtcount=0 Mar 21 08:22:24 Marvin root: data = bsize=4096 blocks=1465130633, imaxpct=5 Mar 21 08:22:24 Marvin root: = sunit=0 swidth=0 blks Mar 21 08:22:24 Marvin root: naming =version 2 bsize=4096 ascii-ci=0, ftype=1 Mar 21 08:22:24 Marvin root: log =internal log bsize=4096 blocks=521728, version=2 Mar 21 08:22:24 Marvin root: = sectsz=512 sunit=0 blks, lazy-count=1 Mar 21 08:22:24 Marvin root: realtime =none extsz=4096 blocks=0, rtextents=0
I suspect that a reformat will be required, but I haven't tested that theory yet since it will require re-shuffling quite a lot of data to empty that drive.
-
On 1/30/2021 at 7:22 PM, CorneliousJD said:
Also the app URL must start with http:// or https://, I found leaving it blank while having it reverse proxy via https:// caused the whole stylesheet to be broken.
@Built2Succeed this is the answer for your problem.
you haveOn 1/14/2022 at 1:13 PM, Built2Succeed said:-e ‘APP_URL’=‘192.168.1.238:6875’
and you need-e ‘APP_URL’=‘http<s>://192.168.1.238:6875’
- 1
-
On 8/17/2021 at 3:30 PM, PeteAsking said:
Just to reiterate. If you run tag: latest you will 100% have an issue at some point. Just use the tag of the latest version if you want the latest version. You are then in control as to when you move to the next version. No surprises and if people are complaining you can wait it out.
Yup, I got the memo, had to learn at some point. 🙂
- 1
-
8 hours ago, jademonkee said:
FYI I decided to upgrade to v6.2.26 using the docker tag:
linuxserver/unifi-controller:version-6.2.26
Another bit of anecdata. I had been on :latest until it broke during an update a few weeks ago (6.2.24? something like that) and I rolled backed to a named versioned tag that would let the container start. Yesterday I bumped to 6.2.26 and the container started and has been working correctly. No firmware update for my USG3 / already running 4.4.55 with an uptime of 48 days.
No problems with migration, everything appears to be working.
-
On 11/18/2020 at 9:52 AM, Ansuz said:
To anyone still having this problem, I manged to resolve it by setting Tunable (support Hard Links) in Settings -> Global Share Settings to No
This solved it for me, no need to regress to SMB v1.0.
Thank you @Ansuz!!
-
I have another pro-tip for the masses. A little while ago it went from working perfectly to real website rendering issues, none of the assets loading correctly and unable to log in. I suspect this coincided with the arrival of the "reverse proxy URL" field in the container template, but that is pure speculation.
To date I had the APP_URL defined in the .env file
# /config/www/.env # Application URL # Remove the hash below and set a URL if using BookStack behind # a proxy, if using a third-party authentication option. # This must be the root URL that you want to host BookStack on. # All URL's in BookStack will be generated using this value. APP_URL=https://wiki.exampleTLD.com
Now I see it is a variable that can be passed but it was blank. Cool, I fired in wiki.exampleTLD.com and moved on. Same problem. Mixed and matched, screwed around, I could see the Chrome console that it was nesting urls, e.g. wiki.exampleTLD.com/wiki.exampleTLD.com/page. Just not working.
The answer is that you need the protocol in the variable, and remove it from the .env file.
https://wiki.exampleTLD.com
Back in action. Stay safe out there.
- 1
-
On 5/19/2020 at 11:31 PM, ljm42 said:
Perhaps you inadvertently changed your network settings? Post a screenshot of what you see on Settings -> Network
@ljm42, thanks for replying. Just this morning I had a chance to dig back in and figure it out. I don't know why it broke, but this is how I fixed it (for posterity, in case others have a similar problem).
1) I found this post referencing how to delete wg0 from the network config.
Quoteifconfig still showed my br0 and wg0 configs. [Typing this in the terminal removed the unwanted old interface.]
ip link delete wg0
2) This following post from yourself identified the right config files to purge. I did this.
QuoteThe files are in /boot/config/wireguard/ . If you delete those files and reboot then you can start fresh.
3) reboot.
4) Follow the guide on the unRAID blog.
5) Add a DNS entry, because any non-local URLs failed to load.
Boom, back in business! Appreciate the reply, and all your efforts throughout this thread, it got me where I was going.
/klogg
-
On 4/24/2020 at 4:42 PM, xhaloz said:
Jesus christ, thank you so much. I was going nuts. I used a password manager to generate the DB password and it had some symbols in it to include a '#'. I appreciate you!!
Ha! I didn't expect such a fast pay-off on that. The password manager is exactly how I got into that place too. Glad it helped!
-
On 9/25/2019 at 1:25 PM, cback said:
With the help of GilbN on Discord (the guy who wrote the guide I was following) the container is now working. The current theory is that in /appdata/bookstack/www/.env the wrong database credentials were stored. After deleting the entirety of the bookstack appdata folder and running the container again it regenerated it all with the proper database credentials stored this time and the container worked immediately. So if anyone sees this and ran into this same problem before its fixed - check your .env file and see whats in there. Just update that file with the right vals or delete it and have it regen. Shout out again to GilbN.
When I set it up the first time, my DB password had a # in it, and either MariaDB or Bookstack couldn’t handle that. I spent a lot of time troubleshooting when I really just needed to generate a new password without that character.
-
18 hours ago, tknx said:
I am not getting a handshake
I am experiencing exactly the same problem. It worked for a while, some time ago I changed something (unRAID update? Can't remember) and it never worked again. I have; deleted and set up from scratch, removed to the plug-in, reinstalled and configured, removed again and deleted the files from flash, set up from scratch following the guide and Spaceinvader One's video. Never handshakes, never can see the server when connecting from my phone's cellular connection. Set up as "Remote access to server".
One other odd thing is if I change the connection type to "Remote access to LAN" then it recommends the wrong IP range when setting up my peer, but sees the right range in the port forwarding comment. Highlighted in red, port forward to x.x.10.x, static router
Any ideas what I can try next? Desired end state is to be able to access the locally running containers and ports, as well as dedicated IPs for local VMs and other machines on the LAN.
Thanks.
-
This is just for anyone else who hits this wall. Setting up the Bookstack container, I got an endless amount of:
Illuminate\Database\QueryException : SQLSTATE[HY000] [1045] Access denied for user 'xxxx'@'yyy' (using password: YES) (SQL: select * from information_schema.tables where table_schema = bookstack and table_name = migrations and table_type = 'BASE TABLE')
In the end, I noticed in one of log files in the container persistence files (./appdata/bookstack/...) that it had my mariaDB username and password logged, and the password was truncated. Despite trying the `root` user and the customer `bookstack` user I created, both passwords contained a `#` character that wasn't being handled properly and the password would truncate.
Removed the `#` and it fired up like I hadn't lost 3 evenings chasing my tail. Hope this helps someone.
/klogg
-
awesome! Thanks for replying.
-
@stor44 curious to hear if the 3 Seagate 10TB drives are continuing to work on the HBA. I'm just adding 2 to my unRAID box and wondering how you are fairing.
I put the first one in connected to the onboard SATA 2 port to rebuild parity, but the second one has options... 🙂
-
And another thank you. Bought a pre-flashed (p20, IT mode) off Amazon and the unRAID box stopped posting exactly as described above. Put it into a newish Ryzen build and everything worked as expected. Spent na afternoon trying to reflash without the boot bios assuming in desperation that was the problem. Nope. Just not enough tape.
Moved all my drives from the onboard controller to the HBA and unRAID automatically mapped them correctly on first boot and the array started up with no trouble. Thanks!!!!
-
On 2017-12-21 at 6:26 PM, Pducharme said:
You can probably use the cadvisor (from Google) Docker to monitor ressources usage.
This is exactly what I was wondering- why this over cAdvisor or the other way around?
-
On 8/22/2015 at 3:29 PM, RobJ said:
Check out the new v6 plugin for NUT -> [Plug-In] NUT - Network UPS Tools
It's a first version, so I don't know how well the master/slave stuff works yet, but he sounds very open to further development if needed.
That one is abandoned now, but this one is maintained and is working for me.
Announcing New Unraid OS License Keys
in Announcements
Posted
It doesn’t really matter, but I’m replying in case you are legitimately interested and on the off chance it helps you in the future. I ran a global team for a while and we hired around the world based on where our customers were and supporting various time zones- including a handful of European countries. The salary price in Europe can be lower, but there are a non-salary cost (taxes, benefits, pension contributions, various employment law obligations) that really eliminates the perceived savings.
Spain is a notable exception, for some reason, but generally the full carry cost of a developer in Western Europe is pretty close to US developer based outside of California.
🤷♂️