jackyzy823 / fxa-selfhosting

Selfhosting your own Firefox Accounts (FxA)!
Mozilla Public License 2.0
99 stars 13 forks source link

Update from v1.235.1 to v1.277.3 -> MySQL 8.4 Error #33

Open vsatmydynipnet opened 1 month ago

vsatmydynipnet commented 1 month ago

First there was a git pull in the fxa-selfhosting folder to update things. The I patched config.yml based on the diff between the old and the new config.yml.sample. The patch looked like:

--- config.yml  2023-01-28 18:23:00.000000000 +0100
+++ config.yml.1.277    2024-10-05 13:19:00.000000000 +0200
@@ -4,13 +4,20 @@
 ---
 #! Once config.yml changed you should rerun ./init.sh to regenerate `dest`/docker-compose.yml

-#! if PERSISTENCEPATH is relative, it relate with `dest`/docker-compose.yml
+#! if PERSISTENCEPATH is relative, it relates to `dest`/docker-compose.yml
 persistencepath: .
 #! [WARNING] DO NOT DOWNGRADE WITHOUT A CLEAN DB SINCE SCHEMA CANNOT DOWNGRADE.

-#! latest tested version is : v1.235.1
+#! latest tested version is : v1.277.3

-#! [WORKAROUND] we use method to to resolve below issue
+#! [NOTE] Pin mysql version to 8.4 to make server compatible with argument "mysql-native-password"
+#! [NOTE] You could also try my (upgraded) syncserver3 in Python3, No data integrity guaranteed!
+#! [NOTE] Since we use docker-compose-wait to build wait chain, so ./wait binary in dest folder is not necessary, you could delete it.
+#! [WORKAROUND] patch fxa-auth-server https://github.com/mozilla/fxa/issues/16491
+#! [NOTE] Although channelserver issue fixed , still using latest sha256 digest tag.
+#! [NOTE] don't use fxa version between 1.250.x to 1.258.x, https://github.com/mozilla/fxa/issues/15320
+#! [NOTE] from v1.242.4 mysql version upgrade to 8.0.16+
+#! [WORKAROUND] we use method 2 to to resolve below issue
 #! [ISSUE]  cannot change avatar due to https://github.com/mozilla/fxa/pull/7972 -> checkAvatar -> we have same domain with monogramUrl's one. issue: https://github.com/mozilla/fxa/issues/12426 
 #!          so either 1. use different domain like profile-img or 2. patch it 
 #! [WORKAROUND] add LASTACCESSTIME_UPDATES_SAMPLE_RATE=1 to make sync api/v1/account/devices not return 500. see https://github.com/mozilla/fxa/issues/12373
@@ -24,7 +31,7 @@
 #! [NOTE] v1.173+ change base docker image . missing key_*.json in fxa-auth-server so we change to branch br-v1.174.0 to apply breaking changes

 #! by default we use tested version , using latest at your own risk.
-fxa_version: "v1.235.1"
+fxa_version: "v1.277.3"
 option:
   sync:
     #! set true to keep all your sync items not expired
@@ -152,8 +159,9 @@
       key:
 mail:
   #! types are  "localhelper" ,  "localrelay" ,"3rd"
-  #! smtp_user/smtp_pass is required (can be any non-null string) even not used.
+  #! smtp_user/smtp_pass is required for "localrelay" and "3rd" (can be any non-null string) even not used.
   #! "localhelper" uses fxa-auth-local-mail-helper which self sending and receiving and smtp_host/smtp_port/smtp_user/smtp_pass/smtp_secure do not affect.
+  #!               mails are stored in memory , remeber to clean them (by DELETE api or restart container)
   #! "localrelay" use exim-sender  and smtp_host/smtp_port/smtp_user/smtp_pass/smtp_secure do not affect.
   #! "3rd"  send mail to 3rd (like gmail etc)
   type: "3rd"
@@ -173,7 +181,7 @@
 #! for example we add a OAuth Client which can read / write your sync data after granted by you
 oauth:
   clients:
-  #! [NOTE] DELETE BELOW IF NOT USED
+  #! [NOTE] DO NOT ENABLE BELOW IF NOT USED
 #!  - id: deadbeafdeadbeaf
 #!    #! hex secret SECRET
 #!    hashedSecret: SECRET
@@ -211,3 +219,5 @@
   #! if you want fxa-graphql-api communicate with fxa-auth-server internally , turn this `true`
   #! [WARN] browserid-verifier will not work. Since BrowserID is deprecated, just do not use old browser or python `syncclient`
   full_self_sign_workaround: false
+  #! Use a [python3 version syncserver](https://github.com/jackyzy823/syncserver3)
+  use_syncserver3: false

Finally Mysql 8.4 made troubles coming up with error "Container dest-waitforinfra-1 / service "waitforinfra" didn't complete successfully: exit 1".

First Problem was:

Fatal glibc error: CPU does not support x86-64-v2

32 x Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz (2 Sockets) // Running Proxmox 8.2.4

setting the CPU for this Proxmox VM to

x86-64-v2

solved the problem.

Finnaly MySQL ended with Error:

[InnoDB] Cannot open datafile for read-only: 'mysql.ibd' OS error: 71

I was not able to solve this one, so I switched back to the old snapshot.

Any hints how to overcome this upgrade problem?

Thank you

jackyzy823 commented 1 month ago

Hi, this may related to mysql docker image requires new CPU architecture.

You could try to change https://github.com/jackyzy823/fxa-selfhosting/blob/1a42ab23ece9f16ee69df2381e9baa1c61653419/docker-compose.tmpl.yml#L22 to mysql:8.4.0-oraclelinux8 as discussed in the https://github.com/docker-library/mysql/issues/1055