Originally created by @MiraiSubject on GitHub (Apr 17, 2024).
bug description
When trying to download any instagram story (n=3) the error: "it seems like this service is not supported yet or your link is invalid. have you pasted the right link?" shows up in the self-hosted version of cobalt.
version:"3.5"services:cobalt-api:image:ghcr.io/wukko/cobalt:7restart:unless-stoppedcontainer_name:cobalt-apiinit:true# if container doesn't run detached on your machine, uncomment the next line#tty: trueports:- 9000:9000/tcp# if you're using a reverse proxy, uncomment the next line and remove the one above (9000:9000/tcp):#- 127.0.0.1:9000:9000environment:# replace https://co.wuk.sh/ with your instance's target url in same formatAPI_URL:http://myhostname.local:9000/# replace eu-nl with your instance's distinctive nameAPI_NAME:myhostname# see docs/run-an-instance.md for more informationlabels:- com.centurylinklabs.watchtower.scope=cobalt# - ./cookies.json:/cookies.jsoncobalt-web:image:ghcr.io/wukko/cobalt:7restart:unless-stoppedcontainer_name:cobalt-webinit:true# if container doesn't run detached on your machine, uncomment the next line#tty: trueports:- 9001:9001/tcp# if you're using a reverse proxy, uncomment the next line and remove the one above (9001:9001/tcp):#- 127.0.0.1:9001:9001environment:# replace https://cobalt.tools/ with your instance's target url in same formatWEB_URL:https://myhostname.local:9001/# replace https://co.wuk.sh/ with preferred api instance urlAPI_URL:http://myhostname.local:9000/labels:- com.centurylinklabs.watchtower.scope=cobalt# update the cobalt image automatically with watchtowerwatchtower:image:ghcr.io/containrrr/watchtowerrestart:unless-stoppedcommand:--cleanup --scope cobalt --interval 900volumes:- /var/run/docker.sock:/var/run/docker.socknetworks:{}
reproduction steps
steps to reproduce the behavior:
Deploy the container using the above docker compose file
Paste the story URL and click the arrows to download
Also downloading images and reels still work as expected.
Originally created by @MiraiSubject on GitHub (Apr 17, 2024).
**bug description**
When trying to download any instagram story (n=3) the error: "it seems like this service is not supported yet or your link is invalid. have you pasted the right link?" shows up in the self-hosted version of cobalt.
Example URL that does not work (as of posting story is 6h old): https://www.instagram.com/stories/sega/3348105858019674311/
<details><summary>Docker compose file</summary>
<p>
```yaml
version: "3.5"
services:
cobalt-api:
image: ghcr.io/wukko/cobalt:7
restart: unless-stopped
container_name: cobalt-api
init: true
# if container doesn't run detached on your machine, uncomment the next line
#tty: true
ports:
- 9000:9000/tcp
# if you're using a reverse proxy, uncomment the next line and remove the one above (9000:9000/tcp):
#- 127.0.0.1:9000:9000
environment:
# replace https://co.wuk.sh/ with your instance's target url in same format
API_URL: http://myhostname.local:9000/
# replace eu-nl with your instance's distinctive name
API_NAME: myhostname
# see docs/run-an-instance.md for more information
labels:
- com.centurylinklabs.watchtower.scope=cobalt
# - ./cookies.json:/cookies.json
cobalt-web:
image: ghcr.io/wukko/cobalt:7
restart: unless-stopped
container_name: cobalt-web
init: true
# if container doesn't run detached on your machine, uncomment the next line
#tty: true
ports:
- 9001:9001/tcp
# if you're using a reverse proxy, uncomment the next line and remove the one above (9001:9001/tcp):
#- 127.0.0.1:9001:9001
environment:
# replace https://cobalt.tools/ with your instance's target url in same format
WEB_URL: https://myhostname.local:9001/ # replace https://co.wuk.sh/ with preferred api instance url
API_URL: http://myhostname.local:9000/
labels:
- com.centurylinklabs.watchtower.scope=cobalt
# update the cobalt image automatically with watchtower
watchtower:
image: ghcr.io/containrrr/watchtower
restart: unless-stopped
command: --cleanup --scope cobalt --interval 900
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks: {}
```
</p>
</details>
**reproduction steps**
steps to reproduce the behavior:
1. Deploy the container using the above docker compose file
2. Paste the story URL and click the arrows to download
3. Observe:

**screenshots**
**links**
https://www.instagram.com/stories/sega/3348105858019674311/
https://www.instagram.com/stories/heyitssharla/3348111419970427324/
**platform**
- Server OS: Debian / DIetPi 9.3.1
- Client OS: macOS Sonoma
- Browser: Safari & Firefox 125
**additional context**
Downloading the stories does work from https://cobalt.tools/
I also made sure to run `docker compose pull` and `docker compose up -d` to ensure I have the latest version based on that the instagram endpoints got changed: https://github.com/wukko/cobalt/commit/6d17ff2e06120626cb88fb55622a0f1e26c71bf3

Also downloading images and reels still work as expected.
GiteaMirror
added the bug label 2025-11-09 09:43:55 -06:00
Oops forgot to specify that. Yes. I had cookies initially enabled by using my own account's cookies in the file. To troubleshoot this issue I had removed the cookies file from the volume.
@MiraiSubject commented on GitHub (Apr 17, 2024):
Oops forgot to specify that. Yes. I had cookies initially enabled by using my own account's cookies in the file. To troubleshoot this issue I had removed the cookies file from the volume.
I realised I vimmed a bit too hard and noticed that the cookies.json was under labels and volumes was completely gone. So I rectified that and entered the API container's shell to ensure the file was there by catting it.
I grabbed all my cookies off a request and ran into trouble getting it properly in the json string cause there's nested quotes and backslashes that needed escaping (like in the rurshbid,shbts). I managed to get those escaped and still couldn't download a private post. I then proceeded to remove those 3 from the string in the cookies file, and that also didn't result in success.
After that I only filled in the fields that the documentation asks for, so these KV pairs: mid=<replace>; ig_did=<with>; csrftoken=<your>; ds_user_id=<own>; sessionid=<cookies> and no success either. I made sure they were in the correct order just in case that mattered.
In between every change I ran docker compose down && docker compose up -d
Anyway it turns out COOKIE_PATH was missing in the environment:
environment:# replace https://co.wuk.sh/ with your instance's target url in same formatAPI_URL:http://herta.local:9000/# replace eu-nl with your instance's distinctive nameAPI_NAME:herta# see docs/run-an-instance.md for more informationCOOKIE_PATH:"/cookies.json"
So it's a PEBCAK issue, but imo a COOKIE_PATH example should also be included in the compose file if a volume suggestion for it is offered, or alternatively, in the app try to read COOKIE_PATH and if it doesn't exist read /cookies.json. I didn't read the table at the bottom under the docker compose section and I actually found this out from cloning the source code and searching for cookie lol
@MiraiSubject commented on GitHub (Apr 17, 2024):
I realised I vimmed a bit too hard and noticed that the cookies.json was under labels and volumes was completely gone. So I rectified that and entered the API container's shell to ensure the file was there by catting it.

I grabbed all my cookies off a request and ran into trouble getting it properly in the json string cause there's nested quotes and backslashes that needed escaping (like in the `rur` `shbid`,`shbts`). I managed to get those escaped and still couldn't download a private post. I then proceeded to remove those 3 from the string in the cookies file, and that also didn't result in success.
After that I only filled in the fields that the documentation asks for, so these KV pairs: `mid=<replace>; ig_did=<with>; csrftoken=<your>; ds_user_id=<own>; sessionid=<cookies>` and no success either. I made sure they were in the correct order just in case that mattered.
In between every change I ran `docker compose down && docker compose up -d`
Anyway it turns out COOKIE_PATH was missing in the environment:
```yaml
environment:
# replace https://co.wuk.sh/ with your instance's target url in same format
API_URL: http://herta.local:9000/
# replace eu-nl with your instance's distinctive name
API_NAME: herta
# see docs/run-an-instance.md for more information
COOKIE_PATH: "/cookies.json"
```
So it's a PEBCAK issue, but imo a COOKIE_PATH example should also be included in the compose file if a volume suggestion for it is offered, or alternatively, in the app try to read COOKIE_PATH and if it doesn't exist read /cookies.json. I didn't read the table at the bottom under the docker compose section and I actually found this out from cloning the source code and searching for cookie lol
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Originally created by @MiraiSubject on GitHub (Apr 17, 2024).
bug description
When trying to download any instagram story (n=3) the error: "it seems like this service is not supported yet or your link is invalid. have you pasted the right link?" shows up in the self-hosted version of cobalt.
Example URL that does not work (as of posting story is 6h old): https://www.instagram.com/stories/sega/3348105858019674311/
Docker compose file
reproduction steps
steps to reproduce the behavior:
screenshots
links
https://www.instagram.com/stories/sega/3348105858019674311/
https://www.instagram.com/stories/heyitssharla/3348111419970427324/
platform
additional context
Downloading the stories does work from https://cobalt.tools/
I also made sure to run
docker compose pullanddocker compose up -dto ensure I have the latest version based on that the instagram endpoints got changed: https://github.com/wukko/cobalt/commit/6d17ff2e06120626cb88fb55622a0f1e26c71bf3Also downloading images and reels still work as expected.
@wukko commented on GitHub (Apr 17, 2024):
have you added dummy account cookies? stories don't work without them iirc
@MiraiSubject commented on GitHub (Apr 17, 2024):
Oops forgot to specify that. Yes. I had cookies initially enabled by using my own account's cookies in the file. To troubleshoot this issue I had removed the cookies file from the volume.
@MiraiSubject commented on GitHub (Apr 17, 2024):
I realised I vimmed a bit too hard and noticed that the cookies.json was under labels and volumes was completely gone. So I rectified that and entered the API container's shell to ensure the file was there by catting it.
I grabbed all my cookies off a request and ran into trouble getting it properly in the json string cause there's nested quotes and backslashes that needed escaping (like in the
rurshbid,shbts). I managed to get those escaped and still couldn't download a private post. I then proceeded to remove those 3 from the string in the cookies file, and that also didn't result in success.After that I only filled in the fields that the documentation asks for, so these KV pairs:
mid=<replace>; ig_did=<with>; csrftoken=<your>; ds_user_id=<own>; sessionid=<cookies>and no success either. I made sure they were in the correct order just in case that mattered.In between every change I ran
docker compose down && docker compose up -dAnyway it turns out COOKIE_PATH was missing in the environment:
So it's a PEBCAK issue, but imo a COOKIE_PATH example should also be included in the compose file if a volume suggestion for it is offered, or alternatively, in the app try to read COOKIE_PATH and if it doesn't exist read /cookies.json. I didn't read the table at the bottom under the docker compose section and I actually found this out from cloning the source code and searching for cookie lol