Re: [go-cd] Help Needed with GoCD Docker Setup and cruise-config.xml Configuration

2024-04-11 Thread Chad Wilson
Just some housekeeping - there is no "GoCD Support Team". That would be a
commercial thing you should expect to pay for :-)

It's quite likely your mount path and/or file permissions are wrong - or
you at least need to fix these first and then see what else might be a
problem.

If you are mounting with -v /mnt/gocd_efs:/godata from the host
perspective, your cruise-config.xml needs to be at
/mnt/gocd_efs*/config*/cruise-config.xml,
and your config DB needs to be at /mnt/gocd_efs/db/config.git etc etc.

/godata/config/cruise-config.xml would be the only place GoCD will look for
config INSIDE the container, so the content of /godata/cruise-config.xml is
irrelevant - the root of /godata is not looked at, as you can see from the
symlinks created in /go-working-dir

In any case, your volume listing is a mess, as you also seem to have a
"godata" dir *inside* the same folder that you are trying to mounting as
godata, and you have other files in the root which should not be in the
root of a "godata" folder (cipher.aes, cruise-config.xml etc), so it looks
like you have mounted the same thing to multiple different target dirs in a
container and not cleaned up between runs. I strongly advise you mount a
clean/empty folder from within your EFS volume and ensure you only have the
expected data/folders in the expected places. It's extremely difficult to
debug or understand what might be going wrong with such a mess, and may
lead to unpredictable behaviour

If you start with a fresh volume (or empty directory within the volume)
with nothing in it and let GoCD create its own structure of files inside
/godata, you can compare the permissions and file locations and then make
sure you copy your existing config/artifacts/databases carefully into the
correct places, with the correct permissions.

Note when copying files around on the host (rather than inside the
container) that you may need to correct *all relevant* file ownership on
your volume inside /godata to be owned and writeable by the "go" user
(UID=1000, probably the same as ec2-user on the host) - NOT root, as the
container runs with a non-root user by default. This is something container
orchestration such as Kubernetes can manage for you, but if you are doing
manual containers and importing content from elsewhere to prepare volume
you need to be comfortable with managing things like this yourself, or you
will have unpredictable behaviour.

-Chad

On Thu, Apr 11, 2024 at 6:53 PM Satya Elipe  wrote:

> Just to add:
>
> I see the right content in the file in the /godata/:
>
> ```
>
> bash-5.1$ ls -al /godata/cruise-config.xml
>
> -rwxr-xr-x1 root root 14950 Apr 11 09:38
> /godata/cruise-config.xml
>
> bash-5.1$ cat /godata/cruise-config.xml
>
> 
>
> http://www.w3.org/2001/XMLSchema-instance;
> xsi:noNamespaceSchemaLocation="cruise-config.xsd" schemaVersion="139">
>
>  agentAutoRegisterKey="abcb673ad8de1f6df1afa41eff9ba70e"
> webhookSecret="e7e978e8-b4b1-498f-bd15-ce4c8f6f4240"
> tokenGenerationKey="6a945808-d166-40f2-87ab-a1533fc1edba">
>
> 
>
>   https://gocd-brxt.corp.mendeley.com/
>
>   https://gocd-brxt.corp.mendeley.com/
>
> 
>
> 
>
>   
>
>  pluginId="cd.go.authentication.passwordfile">
>
>   
>
> PasswordFilePath
>
> /etc/go/users.passwd
>
>   
>
> 
>
>   
>
>   
>
> api_user
>
>   
>
> 
>
>  />
>
> 
>
>   artifacts
>
> 
>
>   
>
>   ```
>
>
>
> But then looks like the file getting changed after the sym links creation:
>
> ```
>
> bash-5.1$ ls -al /go-working-dir/
>
> total 107804
>
> drwxrwxr-x1 go   root 16384 Apr 11 09:42 .
>
> drwxr-xr-x1 root root90 Apr 11 09:41 ..
>
> lrwxrwxrwx1 go   root17 Apr 11 09:41 artifacts ->
> /godata/artifacts
>
> lrwxrwxrwx1 go   root14 Apr 11 09:41 bin ->
> /go-server/bin
>
> lrwxrwxrwx1 go   root14 Apr 11 09:41 config ->
> /godata/config
>
> -rw-r--r--1 go   root 110355285 Apr 11 09:41 cruise.war
>
> lrwxrwxrwx1 go   root10 Apr 11 09:41 db -> /godata/db
>
> drwxr-xr-x   11 go   root   141 Apr 11 09:42 felix-cache
>
> lrwxrwxrwx1 go   root14 Apr 11 09:41 lib ->
> /go-server/lib
>
> lrwxrwxrwx1 go   root12 Apr 11 09:41 logs ->
> /godata/logs
>
> lrwxrwxrwx1 go   root15 Apr 11 09:41 plugins ->
> /godata/plugins
>
> drwxr-xr-x   11 go   root 16384 Apr 11 09:42 plugins_work
>
> lrwxrwxrwx1 go   root14 Apr 11 09:41 run ->
> /go-server/run
>
> drwxr-xr-x3 go   root52 Apr 11 09:41 work
>
> lrwxrwxrwx1 go   root18 Apr 11 09:41 wrapper ->
> /go-server/wrapper
>
> lrwxrwxrwx1 go   root25 Apr 11 09:41 wrapper-config
> -> /go-server/wrapper-config
>
> bash-5.1$ cat /godata/config/cruise-config.xml
>
> 
>
> 

Re: [go-cd] Help Needed with GoCD Docker Setup and cruise-config.xml Configuration

2024-04-11 Thread Satya Elipe
Just to add:

I see the right content in the file in the /godata/:

```

bash-5.1$ ls -al /godata/cruise-config.xml

-rwxr-xr-x1 root root 14950 Apr 11 09:38
/godata/cruise-config.xml

bash-5.1$ cat /godata/cruise-config.xml



http://www.w3.org/2001/XMLSchema-instance;
xsi:noNamespaceSchemaLocation="cruise-config.xsd" schemaVersion="139">





  https://gocd-brxt.corp.mendeley.com/

  https://gocd-brxt.corp.mendeley.com/





  



  

PasswordFilePath

/etc/go/users.passwd

  



  

  

api_user

  







  artifacts



  

  ```



But then looks like the file getting changed after the sym links creation:

```

bash-5.1$ ls -al /go-working-dir/

total 107804

drwxrwxr-x1 go   root 16384 Apr 11 09:42 .

drwxr-xr-x1 root root90 Apr 11 09:41 ..

lrwxrwxrwx1 go   root17 Apr 11 09:41 artifacts ->
/godata/artifacts

lrwxrwxrwx1 go   root14 Apr 11 09:41 bin ->
/go-server/bin

lrwxrwxrwx1 go   root14 Apr 11 09:41 config ->
/godata/config

-rw-r--r--1 go   root 110355285 Apr 11 09:41 cruise.war

lrwxrwxrwx1 go   root10 Apr 11 09:41 db -> /godata/db

drwxr-xr-x   11 go   root   141 Apr 11 09:42 felix-cache

lrwxrwxrwx1 go   root14 Apr 11 09:41 lib ->
/go-server/lib

lrwxrwxrwx1 go   root12 Apr 11 09:41 logs ->
/godata/logs

lrwxrwxrwx1 go   root15 Apr 11 09:41 plugins ->
/godata/plugins

drwxr-xr-x   11 go   root 16384 Apr 11 09:42 plugins_work

lrwxrwxrwx1 go   root14 Apr 11 09:41 run ->
/go-server/run

drwxr-xr-x3 go   root52 Apr 11 09:41 work

lrwxrwxrwx1 go   root18 Apr 11 09:41 wrapper ->
/go-server/wrapper

lrwxrwxrwx1 go   root25 Apr 11 09:41 wrapper-config ->
/go-server/wrapper-config

bash-5.1$ cat /godata/config/cruise-config.xml



http://www.w3.org/2001/XMLSchema-instance;
xsi:noNamespaceSchemaLocation="cruise-config.xsd" schemaVersion="139">

  



  artifacts



  

```



Is that been happening by the entrypoint script as such ?


For information, here is my dockerfile:

```

# Use the official GoCD server image from gocd.org as the base
FROM gocd/gocd-server:v22.3.0

# Environment variables can be set if needed
ENV GO_SERVER_SYSTEM_PROPERTIES=""

# Switch to root user to install additional packages
USER root

# Install additional packages required for your setup
RUN apk update && apk add --no-cache \
unzip \
git \
openssh-client \
jq \
ca-certificates \
curl \
zip \
 && rm -rf /var/cache/apk/* /var/lib/apt/lists/*

# No custom entrypoint script is used, rely on the base image's entrypoint

# Switch back to the GoCD user for safety
USER go

# Volumes where GoCD expects data to persist, you will mount your EFS to
these locations
VOLUME ["/var/lib/go-server", "/etc/go"]

# Expose ports
EXPOSE 8153 8154

# The ENTRYPOINT from the base image is used, ensuring GoCD starts up as
expected```



Many thanks

Satya

On Thu, Apr 11, 2024 at 11:11 AM Satya Elipe  wrote:

> Thank you Chad.
>
> I see my next issue with that, wherein cruise-config.xml is still not seen
> by the container and uses default or generates its own.
>
> Here is the data on the EFS mount:
> ```
> [ec2-user@ip-10-154-168-49 ~]$ ls -al /mnt/gocd_efs
> total 108252
> drwxr-xr-x. 15 ec2-user root  6144 Apr 11 09:38 .
> drwxr-xr-x.  3 root root22 Apr 10 15:57 ..
> drwxr-xr-x.  4 ec2-user root  6144 Dec 16  2020 artifacts
> -rwxr-xr-x.  1 root root32 Apr 11 09:38 cipher.aes
> -rwxr-xr-x.  1 root root32 Apr 11 09:38
> cipher.aes.16540.2020-12-16@14:08:08~
> drwxr-xr-x.  2 ec2-user root  6144 Apr 11 08:10 config
> -rwxr-xr-x.  1 root root 14950 Apr 11 09:38 cruise-config.xml
> -rwxr-xr-x.  1 root root  7382 Apr 11 09:38
> cruise-config.xml.1125.2021-01-19@11:20:26~
> -rwxr-xr-x.  1 root root 10460 Apr 11 09:38
> cruise-config.xml.invalid.2021-09-27-16-03-30
> -rwxr-xr-x.  1 root root 47442 Apr 11 09:38 cruise-config.xsd
> -rwxr-xr-x.  1 ec2-user root 110355285 Apr 10 09:28 cruise.war
> drwxr-xr-x.  3 ec2-user root  6144 Dec 16  2020 data
> drwxr-xr-x.  5 ec2-user root  6144 Jul  7  2022 db
> drwxr-xr-x.  3 ec2-user root  6144 Apr 10 18:17 etc_go
> drwxr-xr-x. 12 ec2-user root  6144 Apr 10 09:29 felix-cache
> -rwxr-xr-x.  1 root root   799 Apr 11 09:38 go_update_server.pub
> drwxr-xr-x.  3 root root  6144 Apr 11 09:38 godata
> -rwxr-xr-x.  1 root root  4120 Apr 11 09:38 jetty.xml
> drwxr-xr-x.  2 ec2-user root  6144 Apr 11 08:11 logs
> drwxr-xr-x.  3 ec2-user root  6144 Dec 16  2020 pipelines
> -rwxr-xr-x.  1 ec2-user root   131 Sep 27  2021
> 

Re: [go-cd] Help Needed with GoCD Docker Setup and cruise-config.xml Configuration

2024-04-11 Thread Satya Elipe
Thank you Chad.

I see my next issue with that, wherein cruise-config.xml is still not seen
by the container and uses default or generates its own.

Here is the data on the EFS mount:
```
[ec2-user@ip-10-154-168-49 ~]$ ls -al /mnt/gocd_efs
total 108252
drwxr-xr-x. 15 ec2-user root  6144 Apr 11 09:38 .
drwxr-xr-x.  3 root root22 Apr 10 15:57 ..
drwxr-xr-x.  4 ec2-user root  6144 Dec 16  2020 artifacts
-rwxr-xr-x.  1 root root32 Apr 11 09:38 cipher.aes
-rwxr-xr-x.  1 root root32 Apr 11 09:38
cipher.aes.16540.2020-12-16@14:08:08~
drwxr-xr-x.  2 ec2-user root  6144 Apr 11 08:10 config
-rwxr-xr-x.  1 root root 14950 Apr 11 09:38 cruise-config.xml
-rwxr-xr-x.  1 root root  7382 Apr 11 09:38
cruise-config.xml.1125.2021-01-19@11:20:26~
-rwxr-xr-x.  1 root root 10460 Apr 11 09:38
cruise-config.xml.invalid.2021-09-27-16-03-30
-rwxr-xr-x.  1 root root 47442 Apr 11 09:38 cruise-config.xsd
-rwxr-xr-x.  1 ec2-user root 110355285 Apr 10 09:28 cruise.war
drwxr-xr-x.  3 ec2-user root  6144 Dec 16  2020 data
drwxr-xr-x.  5 ec2-user root  6144 Jul  7  2022 db
drwxr-xr-x.  3 ec2-user root  6144 Apr 10 18:17 etc_go
drwxr-xr-x. 12 ec2-user root  6144 Apr 10 09:29 felix-cache
-rwxr-xr-x.  1 root root   799 Apr 11 09:38 go_update_server.pub
drwxr-xr-x.  3 root root  6144 Apr 11 09:38 godata
-rwxr-xr-x.  1 root root  4120 Apr 11 09:38 jetty.xml
drwxr-xr-x.  2 ec2-user root  6144 Apr 11 08:11 logs
drwxr-xr-x.  3 ec2-user root  6144 Dec 16  2020 pipelines
-rwxr-xr-x.  1 ec2-user root   131 Sep 27  2021
plugin-slack.notifier.log
drwxr-xr-x.  4 ec2-user root  6144 Apr  4 14:59 plugins
drwxr-xr-x. 11 ec2-user root  6144 Apr 10 09:29 plugins_work
drwxr-xr-x.  2 ec2-user root  6144 Apr 10 09:28 run
-rwxr-xr-x.  1 root root   144 Apr 11 09:38 users.passwd
drwxr-xr-x.  3 ec2-user root  6144 Apr 10 09:28 work```

And, /mnt/gocd_efs/cruise-config.xml:
```
[ec2-user@ip-10-154-168-49 ~]$ cat /mnt/gocd_efs/cruise-config.xml

http://www.w3.org/2001/XMLSchema-instance;
xsi:noNamespaceSchemaLocation="cruise-config.xsd" schemaVersion="139">


  https://gocd-brxt.corp.mendeley.com/
  https://gocd-brxt.corp.mendeley.com/


  

  
PasswordFilePath
/etc/go/users.passwd
  

  
  
api_user
  



  artifacts

  
  

  ```


And, mounting into the container:
```
  docker run -d \
  --name gocd-server \
  -p 8153:8153 \
  -p 8154:8154 \
  -v /mnt/gocd_efs:/godata \
  custom-gocd-server```

And the data in the container:
```
bash-5.1$ ls -al /go-working-dir
total 107804
drwxrwxr-x1 go   root 16384 Apr 11 09:42 .
drwxr-xr-x1 root root90 Apr 11 09:41 ..
lrwxrwxrwx1 go   root17 Apr 11 09:41 artifacts ->
/godata/artifacts
lrwxrwxrwx1 go   root14 Apr 11 09:41 bin ->
/go-server/bin
lrwxrwxrwx1 go   root14 Apr 11 09:41 config ->
/godata/config
-rw-r--r--1 go   root 110355285 Apr 11 09:41 cruise.war
lrwxrwxrwx1 go   root10 Apr 11 09:41 db -> /godata/db
drwxr-xr-x   11 go   root   141 Apr 11 09:42 felix-cache
lrwxrwxrwx1 go   root14 Apr 11 09:41 lib ->
/go-server/lib
lrwxrwxrwx1 go   root12 Apr 11 09:41 logs ->
/godata/logs
lrwxrwxrwx1 go   root15 Apr 11 09:41 plugins ->
/godata/plugins
drwxr-xr-x   11 go   root 16384 Apr 11 09:42 plugins_work
lrwxrwxrwx1 go   root14 Apr 11 09:41 run ->
/go-server/run
drwxr-xr-x3 go   root52 Apr 11 09:41 work
lrwxrwxrwx1 go   root18 Apr 11 09:41 wrapper ->
/go-server/wrapper
lrwxrwxrwx1 go   root25 Apr 11 09:41 wrapper-config ->
/go-server/wrapper-config```

And "/godata/config/cruise-config.xml" in the is not same as the one from
the efs mount:
```
bash-5.1$ cat /godata/config/cruise-config.xml

http://www.w3.org/2001/XMLSchema-instance;
xsi:noNamespaceSchemaLocation="cruise-config.xsd" schemaVersion="139">
  

  artifacts

  
```

Wonder where is it going wrong and the container not seeing it, do we have
to mount them differently ?

Here is what container logs say:
```
/docker-entrypoint.sh: Creating directories and symlinks to hold GoCD
configuration, data, and logs
$ ln -sv /godata/artifacts /go-working-dir/artifacts
'/go-working-dir/artifacts' -> '/godata/artifacts'
$ mkdir -v -p /godata/config
created directory: '/godata/config'
$ ln -sv /godata/config /go-working-dir/config
'/go-working-dir/config' -> '/godata/config'
$ ln -sv /godata/db /go-working-dir/db
'/go-working-dir/db' -> '/godata/db'
$ mkdir -v -p /godata/logs
created directory: '/godata/logs'
$ ln -sv /godata/logs /go-working-dir/logs
'/go-working-dir/logs' -> '/godata/logs'
$ ln 

Re: [go-cd] Help Needed with GoCD Docker Setup and cruise-config.xml Configuration

2024-04-10 Thread Chad Wilson
Hi Satya

When running a standard GoCD docker server image, you should mount a
writable volume to the entire */godata* directory which includes the config
as noted at https://hub.docker.com/r/gocd/gocd-server, but not directly to
an individual config file.

If you do not, even if you get the config working properly, you'll lose
other things such as artifacts at startup which you generally do not want.

You are getting this error likely because the server ID inside the go
config does not match what is inside the configuration history, which is
normally at /godata/db/config.git (The GoCD Docker entrypoint script
creates the symlinks into /go-working-dir within the docker-entrypoint.sh
),
so these things need to be mounted together and consistent.

I don't think your mounts to /var/lib/go-server or /etc/go will be doing
anything, as these folders are not used for *off-the-shelf* docker server
images, since the server is not installed as an rpm/deb package when
creating a container. You can/should likely remove these.

In a general sense, all you should need to do is mount a location in EFS to
/godata, similar to what the Helm chart does:
https://github.com/gocd/helm-chart/blob/c734ad2263b1d2885229d00267c428e88f868504/gocd/templates/gocd-server-deployment.yaml#L122-L124
That will put all logs, artifacts, databases and config on your volume.
Some folks decide to also mount /home/go if they want to use external
storage for things like Git SSH keys or other shell defaults affecting the
*go* user, but that's optional.

-Chad

On Thu, Apr 11, 2024 at 5:34 AM Satya Elipe  wrote:

>
> Dear GoCD Support Team,
>
>
> I hope this message finds you well. I am currently encountering an issue
> with setting up GoCD on Docker and specifically with configuring the
> cruise-config.xml file to be recognized correctly in my setup. Despite
> following the official documentation and trying various configurations,
> I've hit a stumbling block that I hope you can help me with.
>
>
> *Issue Summary:*
>
> I have a GoCD server running in a Docker container, and I'm attempting to
> ensure that the cruise-config.xml file is correctly picked up from a
> specified location. My goal is to mount this configuration file from an
> external volume into the GoCD server container so that the server uses this
> configuration instead of the default one.
>
> *Configuration Details:*
>
>- *GoCD Server Image Version:* gocd/gocd-server:v22.3.0
>- *Docker Version:* Docker version 25.0.3, build 4debf41
>- *Host Operating System:* Amazon Linux 2023
>
> *Docker Run Command:*
>
> docker run -d \
>
>   --name gocd-server \
>
>   -p 8153:8153 \
>
>   -p 8154:8154 \
>
>   -v /mnt/gocd_efs:/var/lib/go-server \
>
>   -v
> /mnt/gocd_efs/etc_go/cruise-config.xml:/go-working-dir/config/cruise-config.xml
> \
>
>   -v /mnt/gocd_efs/etc_go:/etc/go \
>
>   custom-gocd-server
>
>
>
> *Issue Encountered:*
>
> When including the -v
> /mnt/gocd_efs/etc_go/cruise-config.xml:/go-working-dir/config/cruise-config.xml
> volume mount, the GoCD server fails to start correctly, with logs
> indicating an inability to create or copy necessary files within
> /go-working-dir/config.
>
>
> Without this mount, the server starts but does not load the desired
> configuration, defaulting instead to the initial configuration without any
> of our pipeline configurations.
>
>
> Log snippet:
> ```
> jvm 1| 2024-04-10 20:55:17,429 ERROR [Thread-79]
> GoFileConfigDataSource:436 - Unable to load config file:
> /go-working-dir/config/cruise-config.xml The value of 'serverId' uniquely
> identifies a Go server instance. This field cannot be modified.
>
> ```
>
>
>
> *Questions:*
>
>- Is there a recommended approach to ensure cruise-config.xml is
>correctly recognized and used by the GoCD server when running in Docker?
>- Could this issue be related to how volumes are mounted or
>permissions within the container?
>
>
> Any assistance or insights you could provide on this matter would be
> greatly appreciated. I am happy to provide any further information or logs
> as needed.
>
> Thank you for your time and support.
>
>
>
> Best regards,
>
> Satya
>
> --
> You received this message because you are subscribed to the Google Groups
> "go-cd" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to go-cd+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/go-cd/CADKEDRrF7KRFP9jNsg631STyokXS1Njqutdshd0ZKdwHMRTy6g%40mail.gmail.com
> 
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"go-cd" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to go-cd+unsubscr...@googlegroups.com.
To view this 

[go-cd] Help Needed with GoCD Docker Setup and cruise-config.xml Configuration

2024-04-10 Thread Satya Elipe
Dear GoCD Support Team,


I hope this message finds you well. I am currently encountering an issue
with setting up GoCD on Docker and specifically with configuring the
cruise-config.xml file to be recognized correctly in my setup. Despite
following the official documentation and trying various configurations,
I've hit a stumbling block that I hope you can help me with.


*Issue Summary:*

I have a GoCD server running in a Docker container, and I'm attempting to
ensure that the cruise-config.xml file is correctly picked up from a
specified location. My goal is to mount this configuration file from an
external volume into the GoCD server container so that the server uses this
configuration instead of the default one.

*Configuration Details:*

   - *GoCD Server Image Version:* gocd/gocd-server:v22.3.0
   - *Docker Version:* Docker version 25.0.3, build 4debf41
   - *Host Operating System:* Amazon Linux 2023

*Docker Run Command:*

docker run -d \

  --name gocd-server \

  -p 8153:8153 \

  -p 8154:8154 \

  -v /mnt/gocd_efs:/var/lib/go-server \

  -v
/mnt/gocd_efs/etc_go/cruise-config.xml:/go-working-dir/config/cruise-config.xml
\

  -v /mnt/gocd_efs/etc_go:/etc/go \

  custom-gocd-server



*Issue Encountered:*

When including the -v
/mnt/gocd_efs/etc_go/cruise-config.xml:/go-working-dir/config/cruise-config.xml
volume mount, the GoCD server fails to start correctly, with logs
indicating an inability to create or copy necessary files within
/go-working-dir/config.


Without this mount, the server starts but does not load the desired
configuration, defaulting instead to the initial configuration without any
of our pipeline configurations.


Log snippet:
```
jvm 1| 2024-04-10 20:55:17,429 ERROR [Thread-79]
GoFileConfigDataSource:436 - Unable to load config file:
/go-working-dir/config/cruise-config.xml The value of 'serverId' uniquely
identifies a Go server instance. This field cannot be modified.

```



*Questions:*

   - Is there a recommended approach to ensure cruise-config.xml is
   correctly recognized and used by the GoCD server when running in Docker?
   - Could this issue be related to how volumes are mounted or permissions
   within the container?


Any assistance or insights you could provide on this matter would be
greatly appreciated. I am happy to provide any further information or logs
as needed.

Thank you for your time and support.



Best regards,

Satya

-- 
You received this message because you are subscribed to the Google Groups 
"go-cd" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to go-cd+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/go-cd/CADKEDRrF7KRFP9jNsg631STyokXS1Njqutdshd0ZKdwHMRTy6g%40mail.gmail.com.