Migrating Specify7 from rootful Docker to rootless Podman

Hello,
I’m currently migrating Specify 7 from rootful Docker to rootless Podman. I have been successful in getting all the Specify containers working in a Podman Pod. I can access the MariaDB on port 3306 and also access the web_asset_store.xml. However when I try to access the main portal I get the following message but nothing more: “It works!”
Any idea what is going on? Where does this message originate from?
Thanks

That message comes from asset-server, if you make GET ‘/’ to it.

Looks like all requests are redirected to the asset server. Can you double-check if requests are proxied correctly (specifically, if any request gets incorrectly proxied to the asset-server instead of specify7 container)? Can you share the nginx configuration if you are using it?

Ah! Thanks for the hint… my pod was pointing to the wrong internal port. Now I’m getting an nginx “502 Bad Gateway”. I have not modified the original nginx config file but I can retriever from the container ir you think it can help.

I get an error message in the specify7 container logs. Maybe this can help…

Updating static files in /volumes/static-files/.
Applying Django migrations.
Traceback (most recent call last):
File “/opt/specify7/ve/lib/python3.8/site-packages/urllib3/connection.py”, line 174, in _new_conn
conn = connection.create_connection(
File “/opt/specify7/ve/lib/python3.8/site-packages/urllib3/util/connection.py”, line 95, in create_connection
raise err
File “/opt/specify7/ve/lib/python3.8/site-packages/urllib3/util/connection.py”, line 85, in create_connection
sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “/opt/specify7/ve/lib/python3.8/site-packages/urllib3/connectionpool.py”, line 715, in urlopen
httplib_response = self._make_request(
File “/opt/specify7/ve/lib/python3.8/site-packages/urllib3/connectionpool.py”, line 416, in _make_request
conn.request(method, url, **httplib_request_kw)
File “/opt/specify7/ve/lib/python3.8/site-packages/urllib3/connection.py”, line 244, in request
super(HTTPConnection, self).request(method, url, body=body, headers=headers)
File “/usr/lib/python3.8/http/client.py”, line 1234, in request
self._send_request(method, url, body, headers, encode_chunked)
File “/usr/lib/python3.8/http/client.py”, line 1280, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File “/usr/lib/python3.8/http/client.py”, line 1229, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File “/usr/lib/python3.8/http/client.py”, line 1008, in _send_output
self.send(msg)
File “/usr/lib/python3.8/http/client.py”, line 948, in send
self.connect()
File “/opt/specify7/ve/lib/python3.8/site-packages/urllib3/connection.py”, line 205, in connect
conn = self._new_conn()
File “/opt/specify7/ve/lib/python3.8/site-packages/urllib3/connection.py”, line 186, in _new_conn
raise NewConnectionError(
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x7fe8597aebe0>: Failed to establish a new connection: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “/opt/specify7/ve/lib/python3.8/site-packages/requests/adapters.py”, line 489, in send
resp = conn.urlopen(
File “/opt/specify7/ve/lib/python3.8/site-packages/urllib3/connectionpool.py”, line 799, in urlopen
retries = retries.increment(
File “/opt/specify7/ve/lib/python3.8/site-packages/urllib3/util/retry.py”, line 592, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host=‘127.0.0.1’, port=8085): Max retries exceeded with url: /web_asset_store.xml (Caused by NewConnectionError(‘<urllib3.connection.HTTPConnection object at 0x7fe8597aebe0>: Failed to establish a new connection: [Errno 111] Connection refused’))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “manage.py”, line 25, in
execute_from_command_line(sys.argv)
File “/opt/specify7/ve/lib/python3.8/site-packages/django/core/management/init.py”, line 419, in execute_from_command_line
utility.execute()
File “/opt/specify7/ve/lib/python3.8/site-packages/django/core/management/init.py”, line 413, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File “/opt/specify7/ve/lib/python3.8/site-packages/django/core/management/base.py”, line 354, in run_from_argv
self.execute(*args, **cmd_options)
File “/opt/specify7/ve/lib/python3.8/site-packages/django/core/management/base.py”, line 398, in execute
output = self.handle(*args, **options)
File “/opt/specify7/ve/lib/python3.8/site-packages/django/core/management/base.py”, line 89, in wrapped
res = handle_func(*args, **kwargs)
File “/opt/specify7/ve/lib/python3.8/site-packages/django/core/management/commands/migrate.py”, line 75, in handle
self.check(databases=[database])
File “/opt/specify7/ve/lib/python3.8/site-packages/django/core/management/base.py”, line 419, in check
all_issues = checks.run_checks(
File “/opt/specify7/ve/lib/python3.8/site-packages/django/core/checks/registry.py”, line 76, in run_checks
new_errors = check(app_configs=app_configs, databases=databases)
File “/opt/specify7/ve/lib/python3.8/site-packages/django/core/checks/urls.py”, line 13, in check_url_config
return check_resolver(resolver)
File “/opt/specify7/ve/lib/python3.8/site-packages/django/core/checks/urls.py”, line 23, in check_resolver
return check_method()
File “/opt/specify7/ve/lib/python3.8/site-packages/django/urls/resolvers.py”, line 416, in check
for pattern in self.url_patterns:
File “/opt/specify7/ve/lib/python3.8/site-packages/django/utils/functional.py”, line 48, in get
res = instance.dict[self.name] = self.func(instance)
File “/opt/specify7/ve/lib/python3.8/site-packages/django/urls/resolvers.py”, line 602, in url_patterns
patterns = getattr(self.urlconf_module, “urlpatterns”, self.urlconf_module)
File “/opt/specify7/ve/lib/python3.8/site-packages/django/utils/functional.py”, line 48, in get
res = instance.dict[self.name] = self.func(instance)
File “/opt/specify7/ve/lib/python3.8/site-packages/django/urls/resolvers.py”, line 595, in urlconf_module
return import_module(self.urlconf_name)
File “/usr/lib/python3.8/importlib/init.py”, line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File “”, line 1014, in _gcd_import
File “”, line 991, in _find_and_load
File “”, line 975, in _find_and_load_unlocked
File “”, line 671, in _load_unlocked
File “”, line 783, in exec_module
File “”, line 219, in _call_with_frames_removed
File “/opt/specify7/specifyweb/urls.py”, line 5, in
from .attachment_gw import urls as attachment_urls
File “/opt/specify7/specifyweb/attachment_gw/urls.py”, line 3, in
from . import views
File “/opt/specify7/specifyweb/attachment_gw/views.py”, line 291, in
init()
File “/opt/specify7/specifyweb/attachment_gw/views.py”, line 210, in init
r = requests.get(settings.WEB_ATTACHMENT_URL)
File “/opt/specify7/ve/lib/python3.8/site-packages/requests/api.py”, line 73, in get
return request(“get”, url, params=params, **kwargs)
File “/opt/specify7/ve/lib/python3.8/site-packages/requests/api.py”, line 59, in request
return session.request(method=method, url=url, **kwargs)
File “/opt/specify7/ve/lib/python3.8/site-packages/requests/sessions.py”, line 587, in request
resp = self.send(prep, **send_kwargs)
File “/opt/specify7/ve/lib/python3.8/site-packages/requests/sessions.py”, line 701, in send
r = adapter.send(request, **kwargs)
File “/opt/specify7/ve/lib/python3.8/site-packages/requests/adapters.py”, line 565, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host=‘127.0.0.1’, port=8085): Max retries exceeded with url: /web_asset_store.xml (Caused by NewConnectionError(‘<urllib3.connection.HTTPConnection object at 0x7fe8597aebe0>: Failed to establish a new connection: [Errno 111] Connection refused’))
[2023-10-26 19:41:07 +0000] [1] [INFO] Starting gunicorn 21.2.0
[2023-10-26 19:41:07 +0000] [1] [INFO] Listening at: http://0.0.0.0:8000 (1)
[2023-10-26 19:41:07 +0000] [1] [INFO] Using worker: sync
[2023-10-26 19:41:07 +0000] [12] [INFO] Booting worker with pid: 12
[2023-10-26 19:41:07 +0000] [13] [INFO] Booting worker with pid: 13
[2023-10-26 19:41:07 +0000] [14] [INFO] Booting worker with pid: 14

PS. The web_asset_store.xml file is not accessible outside the pod anymore.

Nginx logs

/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: can not modify /etc/nginx/conf.d/default.conf (read-only file system?)
/docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2023/10/26 19:42:17 [notice] 1#1: using the “epoll” event method
2023/10/26 19:42:17 [notice] 1#1: nginx/1.25.2
2023/10/26 19:42:17 [notice] 1#1: built by gcc 12.2.0 (Debian 12.2.0-14)
2023/10/26 19:42:17 [notice] 1#1: OS: Linux 4.18.0-477.21.1.el8_8.x86_64
2023/10/26 19:42:17 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 262144:262144
2023/10/26 19:42:17 [notice] 1#1: start worker processes
2023/10/26 19:42:17 [notice] 1#1: start worker process 21
2023/10/26 19:42:17 [notice] 1#1: start worker process 22
2023/10/26 19:42:17 [notice] 1#1: start worker process 23
2023/10/26 19:42:17 [notice] 1#1: start worker process 24
2023/10/26 19:43:16 [error] 23#23: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:43:16 [error] 23#23: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:43:21 [error] 21#21: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:43:21 [error] 21#21: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:43:21 [error] 23#23: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:43:26 [error] 21#21: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:43:26 [error] 23#23: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:43:31 [error] 21#21: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:43:31 [error] 23#23: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:43:36 [error] 21#21: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:43:36 [error] 23#23: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:43:41 [error] 21#21: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:43:41 [error] 23#23: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:43:46 [error] 21#21: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
10.0.2.100 - - [26/Oct/2023:19:43:46 +0000] “GET /web_asset_store.xml HTTP/1.1” 502 559 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.57” “-”
2023/10/26 19:43:46 [error] 23#23: *1 asset-server could not be resolved (110: Operation timed out), client: 10.0.2.100, server: localhost, request: “GET /web_asset_store.xml HTTP/1.1”, host: “s0-bsc-alfcwdev:8085”
10.0.2.100 - - [26/Oct/2023:19:43:51 +0000] “GET / HTTP/1.1” 502 559 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.57” “-”
2023/10/26 19:43:51 [error] 21#21: *4 specify7 could not be resolved (110: Operation timed out), client: 10.0.2.100, server: localhost, request: “GET / HTTP/1.1”, host: “s0-bsc-alfcwdev:8085”
2023/10/26 19:44:38 [error] 21#21: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:44:38 [error] 21#21: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:44:41 [error] 23#23: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:44:41 [error] 23#23: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:44:43 [error] 21#21: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:44:46 [error] 23#23: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:44:48 [error] 21#21: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:44:51 [error] 23#23: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:44:53 [error] 21#21: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:44:56 [error] 23#23: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:44:58 [error] 21#21: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:45:01 [error] 23#23: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:45:03 [error] 21#21: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:45:06 [error] 23#23: recv() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
10.0.2.100 - - [26/Oct/2023:19:45:08 +0000] “GET / HTTP/1.1” 502 559 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.57” “-”
2023/10/26 19:45:08 [error] 21#21: *4 specify7 could not be resolved (110: Operation timed out), client: 10.0.2.100, server: localhost, request: “GET / HTTP/1.1”, host: “s0-bsc-alfcwdev:8085”
10.0.2.100 - - [26/Oct/2023:19:45:11 +0000] “GET /web_asset_store.xml HTTP/1.1” 502 559 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.57” “-”
2023/10/26 19:45:11 [error] 23#23: *1 asset-server could not be resolved (110: Operation timed out), client: 10.0.2.100, server: localhost, request: “GET /web_asset_store.xml HTTP/1.1”, host: “s0-bsc-alfcwdev:8085”
2023/10/26 19:45:54 [error] 22#22: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:45:54 [error] 22#22: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:45:59 [error] 22#22: recv() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:46:04 [error] 22#22: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
10.0.2.100 - - [26/Oct/2023:19:46:06 +0000] “GET /web_asset_store.xml HTTP/1.1” 499 0 “-” “curl/7.61.1” “-”
2023/10/26 19:58:39 [error] 24#24: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:58:39 [error] 24#24: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:58:44 [error] 24#24: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:58:49 [error] 24#24: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:58:54 [error] 24#24: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:58:59 [error] 24#24: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
2023/10/26 19:59:04 [error] 24#24: send() failed (111: Connection refused) while resolving, resolver: 127.0.0.11:53
10.0.2.100 - - [26/Oct/2023:19:59:09 +0000] “GET /web_asset_store.xml HTTP/1.1” 502 559 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.57” “-”
2023/10/26 19:59:09 [error] 24#24: *36 asset-server could not be resolved (110: Operation timed out), client: 10.0.2.100, server: localhost, request: “GET /web_asset_store.xml HTTP/1.1”, host: “s0-bsc-alfcwdev:8085”

FYI. Specify’s application is running on the host system on port 8085

The problem may be here? What is 127.0.0.11? In the nginx specify.conf file

server {
listen 80;
server_name localhost;
root /usr/share/nginx;

# serve static files directly
location /static/ {
    root /volumes;
    rewrite ^/static/config/(.*)$ /specify6/config/$1 break;
    rewrite ^/static/depository/(.*)$ /static-files/depository/$1 break;
    rewrite ^/static/(.*)$ /static-files/frontend-static/$1 break;
}

# proxy these urls to the asset server
location ~ ^/(fileget|fileupload|filedelete|getmetadata|testkey|web_asset_store.xml) {
    client_max_body_size 0;
    resolver 127.0.0.11 valid=30s;
    set $backend "http://asset-server:8080";
    proxy_pass $backend;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

# proxy everything else to specify 7
location / {
    resolver 127.0.0.11 valid=30s;
    set $backend "http://specify7:8000";
    proxy_pass $backend;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

}

Ah! Could it be that container names are hardcoded in the nginx configuration so… if for example you have to rename one of specify’s container (to avoid clashing with other non-specify containers on the same server), you also have to modify it in the nginx config?

If so, other then your Docker-compose file, are there other places where containers names are hardcoded?
Thanks

Hey, I was able to get specify7 all-in-one running in a single Pod using Podman (on Windows). Below are the steps that I used, along with the environment and configuration files. I had to change the nginx configuration, and also the environment variables to get it to work. Additionally, I have added the commands I used to start everything (let me know if anything can be improved!)

Please check the nginx configuration and all the environment files carefully because I had to manually specify the ports.

The report-runner and asset-server both used to run on the same port (8080), so I had to override the settings.py file in asset-server (thus the bind mount in the command) to force it to listen at 5050. This could alternatively be solved by putting asset-server and report runner in different pods

NOTE: The order matters – asset server needs to be up before specify7. redis needs to be up before specify7 worker. specify6 needs to be started before specify7 and specify7 worker.

Step 0: Creating volumes

podman volume create specify6
podman volume create static-files
podman volume create attachments
podman volume create database

Step 1: Creating the pod. I’m using 5000 as the specify port.

podman pod create --name specify_pod_demo --publish 5000:80/TCP --publish 3306:3306

Step 2: Run specify6

podman run --pod specify_pod_demo -u root -v specify6:/opt/Specify:Z specifyconsortium/specify6-service:6.8.03

Step 3: Run nginx

podman run --detach --pod specify_pod_demo -v static-files:/volumes/static-files -v specify6:/volumes/specify6 -v ./nginx.conf:/etc/nginx/conf.d/default.conf nginx:alpine

Step 4: Run MariaDB

podman run --detach --pod specify_pod_demo -v database:/var/lib/mysql -v ./seed-database:/docker-entrypoint-initdb.d --env-file='./mysql.env' mariadb:10.11

Step 5: Run asset server

podman run --detach --pod specify_pod_demo -u root -v attachments:/home/specify/attachments -v ./sp_asset_settings.py:/home/specify/settings.py --env-file='./spasset.env' specifyconsortium/specify-asset-service

Step 6: Run redis

podman run --detach --pod specify_pod_demo redis:6.0

Step 7: Run specify7

podman run --pod specify_pod_demo -u root -v specify6:/opt/Specify -v static-files:/volumes/static-files:Z --env-file='./specify.env' specifyconsortium/specify7-service:v7

Step 8: Run specify7 worker

podman run --pod specify_pod_demo -v specify6:/opt/Specify -v static-files:/volumes/static-files --env-file='./specify.env' specifyconsortium/specify7-service:v7 ve/bin/celery -A specifyweb worker -l INFO --concurrency=1

Step 9: Run report runner

podman run --detach --pod specify_pod_demo specifyconsortium/report-runner

The below zip contains all the configuration and miscellaneous files needed to get the above working (including the seed-database). Run the above commands in that directory.
podman_combined.zip (4.4 MB)

3 Likes

This is AWSOME!
I will try Monday on RHEL. :smiley:

BTW. Why do you sometime use the “:Z” and sometime don’t on your podman volume run commands?

And how does it work when you have 2 containers run commands mapped to the same volume? Do they overide each other? Take for example the specify7 and specify7-worker. The first has “static-files:/volumes/static-files:Z” while the second has “static-files:/volumes/static-files”.

Thanks and have a great weekend!

Hey! I think I got it to work with your commands! Wow! :slight_smile:
Can you send me the Specify7 portal username and password that work with the sql code you shared with me?

PS. I made a slight modification for Linux… if this all works out I will send you my update so that we may share this config with the Consortium community.

Whoops, that’s an oversight on my part.

Username: testiiif
Password: testuser

I had to add :Z to mark it as private read-only. However, I don’t think that is completely necessary (and actually against what official documentation says) - I had to do it for running on Windows. However, based on your first message, you already got that running (otherwise you would have gotten a permission denied error when “updating static files”), so it might work without it for you.

1 Like

Great! I was able to log in! :slight_smile:
However there seems to be a bug with the attachment application when I try to add an image to an collection object. Does it work on your side?


Specify 7 Crash Report - 2023-10-31T14_32_19.544Z.txt (419.5 KB)

Yes, that is expected! On linux, add the following to your /etc/hosts file (What Is the /etc/hosts File in Linux? | Pure Storage Blog):
127.0.0.1 host.containers.internal
If you are using windows, add it to the hosts file in windows (https://www.howtogeek.com/27350/beginner-geek-how-to-edit-your-hosts-file/)

EDIT: Fixed the order

Ok thanks.
I will have to contact our federal server manager to add this to Linux. I don’t have the rights to do it myself.
Will keep you informed ASAP.
Cheers

Can you replace the current files (specify.env and sp_asset_settings.py) with the following?
modified.zip (1.9 KB)

You shouldn’t need to restart anything, just refresh the specify page.

1 Like

Hmmm… I deleted the pod (with containers and volumes) and restarted everything… However I get the same error message… There seems to be a reference to “host.containers.internal” somewhere else in the code.

“message”:[“Error occurred fetching from http://host.containers.internal:5000/fileupload

See the attached file.

Specify 7 Crash Report - 2023-10-31T15_43_06.680Z.txt (516.0 KB)

Wait… don’t waste time on this… the bug is maybe on my side. Will get back ASAP.

Were you modifying the /etc/hosts file on the server or on the personal computer? It needs to be modified on the computer which you are using to access the specify website (not the one hosting it). So, if you are using personal computer to access specify, modify the hosts file on there.

Additionally, revert the changes that I previously said. Apologies for the confusion.