{"id":16162421,"url":"https://github.com/sunsided/titan-docker","last_synced_at":"2025-06-11T21:07:19.391Z","repository":{"id":141993019,"uuid":"97530239","full_name":"sunsided/titan-docker","owner":"sunsided","description":"Yet another Titan, Cassandra and Elasticsearch in Docker Compose setup","archived":false,"fork":false,"pushed_at":"2017-07-18T18:59:13.000Z","size":6,"stargazers_count":2,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-04T08:19:01.966Z","etag":null,"topics":["cassandra","docker","docker-compose","elasticsearch","graph-database","gremlin","tinkerpop","titan"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sunsided.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-07-17T23:12:09.000Z","updated_at":"2019-04-06T01:00:34.000Z","dependencies_parsed_at":null,"dependency_job_id":"64ae150e-455f-430b-883b-4ead84cdb6bb","html_url":"https://github.com/sunsided/titan-docker","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sunsided/titan-docker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunsided%2Ftitan-docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunsided%2Ftitan-docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunsided%2Ftitan-docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunsided%2Ftitan-docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sunsided","download_url":"https://codeload.github.com/sunsided/titan-docker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunsided%2Ftitan-docker/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259340710,"owners_count":22843038,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cassandra","docker","docker-compose","elasticsearch","graph-database","gremlin","tinkerpop","titan"],"created_at":"2024-10-10T02:30:05.147Z","updated_at":"2025-06-11T21:07:19.375Z","avatar_url":"https://github.com/sunsided.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Titan: Lessons learned\n\n### Titan is dead. You want [JanusGraph](https://github.com/sunsided/janusgraph-docker) instead.\n\nSources for the `Dockerfile` and surroundings:\n\n* [efaurie/docker-titan-cassandra](https://github.com/efaurie/docker-titan-cassandra)\n* [elubow/titan-gremlin](https://github.com/elubow/titan-gremlin)\n\nFor multiple graphs in Titan, follow these links:\n\n* [How many graphs can i create in one Titan DB?](https://stackoverflow.com/a/40545537/195651)\n* [Serving multiple Titan graphs over Gremlin Server (TinkerPop 3)](https://medium.com/@jbmusso/serving-multiple-titan-graphs-over-gremlin-server-tinkerpop-3-d3c971d07964)\n* [One graph in one Titan instance](https://jaceklaskowski.gitbooks.io/titan-scala/content/one_graph_in_one_titan_instance.html)\n\n## Cassandra and Elasticsearch\n\nAs per [compatibility matrix](http://s3.thinkaurelius.com/docs/titan/1.0.0/version-compat.html), the supported Cassandra version is 2.1 and the supported Elasticsearch version is 1.5.\n\n## Shell\n\nIn the Gremin REPL examples like this one:\n\n```\n$  bin/gremlin.sh\n         \\,,,/\n         (o o)\n-----oOOo-(3)-oOOo-----\nplugin activated: tinkerpop.server\nplugin activated: tinkerpop.hadoop\nplugin activated: tinkerpop.utilities\nplugin activated: aurelius.titan\nplugin activated: tinkerpop.tinkergraph\ngremlin\u003e :remote connect tinkerpop.server conf/remote.yaml\n==\u003eConnected - localhost/127.0.0.1:8182\ngremlin\u003e :\u003e graph.addVertex(\"name\", \"stephen\")\n==\u003ev[256]\ngremlin\u003e :\u003e g.V().values('name')\n==\u003estephen\n```\n\nThe token `:\u003e` is not part of the _shell_, but an actual _command_. It is required to run the command on the remote server.\nAlso, entering invalid commands in the shell results in an exception on the server.\n\n## Channelizers\n\nUsing the `HttpChannelizer` \n\n```\nchannelizer: org.apache.tinkerpop.gremlin.server.channel.HttpChannelizer\n```\n\nallows for HTTP access to Titan using e.g.\n\n```bash\ncurl \"http://localhost:8182/?gremlin=100-1\"\n```\n\nHowever, this seems to prevent the Gremlin REPL shell from talking to the server:\n\n```\nJul 17, 2017 10:52:00 PM java.util.prefs.FileSystemPreferences$1 run\nINFO: Created user preferences directory.\n\n         \\,,,/\n         (o o)\n-----oOOo-(3)-oOOo-----\nplugin activated: aurelius.titan\nplugin activated: tinkerpop.server\nplugin activated: tinkerpop.utilities\nplugin activated: tinkerpop.hadoop\nplugin activated: tinkerpop.tinkergraph\ngremlin\u003e :remote connect tinkerpop.server conf/remote.yaml\n22:52:14 WARN  org.apache.tinkerpop.gremlin.driver.handler.WebSocketClientHandler  - Exception caught during WebSocket processing - closing connection\nio.netty.handler.codec.http.websocketx.WebSocketHandshakeException: Invalid handshake response getStatus: 400 Bad Request\n\tat io.netty.handler.codec.http.websocketx.WebSocketClientHandshaker13.verify(WebSocketClientHandshaker13.java:182)\n\tat io.netty.handler.codec.http.websocketx.WebSocketClientHandshaker.finishHandshake(WebSocketClientHandshaker.java:202)\n\tat org.apache.tinkerpop.gremlin.driver.handler.WebSocketClientHandler.channelRead0(WebSocketClientHandler.java:73)\n\tat io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308)\n\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294)\n\tat io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:308)\n\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:294)\n\tat io.netty.handler.codec.ByteToMessageDecoder.channelInactive(ByteToMessageDecoder.java:241)\n\tat io.netty.handler.codec.http.HttpClientCodec$Decoder.channelInactive(HttpClientCodec.java:212)\n\tat io.netty.channel.CombinedChannelDuplexHandler.channelInactive(CombinedChannelDuplexHandler.java:132)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive(AbstractChannelHandlerContext.java:208)\n\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive(AbstractChannelHandlerContext.java:194)\n\tat io.netty.channel.DefaultChannelPipeline.fireChannelInactive(DefaultChannelPipeline.java:828)\n\tat io.netty.channel.AbstractChannel$AbstractUnsafe$5.run(AbstractChannel.java:576)\n\tat io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:380)\n\tat io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:357)\n\tat io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116)\n\tat java.lang.Thread.run(Thread.java:748)\n22:52:14 ERROR org.apache.tinkerpop.gremlin.driver.Handler$GremlinResponseHandler  - Could not process the response - correct the problem and restart the driver.\n\n```\n\nThe REPL shell does seem to work with the `WebSocketChannelizer` though:\n\n```\nchannelizer: org.apache.tinkerpop.gremlin.server.channel.WebSocketChannelizer\n```\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsunsided%2Ftitan-docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsunsided%2Ftitan-docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsunsided%2Ftitan-docker/lists"}